신입 개발자입니다. 도와주세요..

신입 개발자입니다. 도와주세요..

QA

신입 개발자입니다. 도와주세요..

답변 6

본문

어느 사이트 회원현황에 엑셀 업로드를 해야하는데 파일 용량이 크거나 해서 업로드가 안된다고 합니다.

그래서 값을 변경해야하는데 어떻게 해야하는지 도와주세요.

include_once('./_common.php');

// 상품이 많을 경우 대비 설정변경
set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('upload_max_size', '80M');

 

밑에 max_size는 제가 넣어본 것인데 새로고침을 해도 안되네요...

오늘 첫출근이고... 이것 밖에 글을 못 쓴 점 죄송합니다. 

이 질문에 댓글 쓰기 :

답변 6

서버에서 업로드 크기도 체크해 봐야합니다 (php.ini)

먼저 phpinfo() 하셔서 지정된 용량 확인하세요. 

그리고 php설정파일인 php.ini 에서 

upload_max_filesize

post_max_size

를 늘려주시면됩니다. 

memory_limit는 일반적으로 128M로 지정되어 있는데 더 늘리실 꺼면 이부분도 수정해 주세요.

리눅스 쓰시면 /etc/php.ini 에서 수정해 주시고 아파치 재 시작해 주시면 됩니다.

 

phpinfo()가 무엇인가요? 처음 켜보는 프로그램이고 아무것도 몰라서ㅠㅠ
<?php
include_once('./_common.php');

// 상품이 많을 경우 대비 설정변경
set_time_limit ( 0 );
ini_set('memory_limit', '128M');


    $file = $_FILES['excelfile']['tmp_name'];

    include_once(G5_LIB_PATH.'/Excel/reader.php');

    $data = new Spreadsheet_Excel_Reader();

    // Set output Encoding.
    $data->setOutputEncoding('UTF-8');
일부분을 캡쳐해봅니다.

phpinfo() 는 php 설정정보와 로드된 모듈을 출력해 주는 함수 입니다.
임의의 파일을 만드시고 <?php phpinfo(); ?> 하시고 브라우저에서 그 파일에 접근하시면 설정 정보가 표시 됩니다.

거기서 업로드 용량관련 설정 정보들을 확인하시면 최대 업로드 사이즈를 알 수 있습니다.
일반적으로 upload_max_filesize, post_max_size 값중 작은 값으로 설정되니 ini_set으로 이부분을 phpinfo() 위에 적용해 보시고 정상적으로 적용되는지 확인 하시면 됩니다.
안되시면 서버에서 php.ini 파일을 직접 수정하셔야 합니다. set_time_limit 와 memory_limit 는 업로드 시간이 오래 걸려 expire 이 표시 되거나 파일용량이 128M를 넘을때 수정해 주시면 됩니다

phpinfo 모르시면 구글에 검색해서 하나씩 알아보셔야할거같네요

php설정자체를 바꿔줘야하는작업이라 답변해드리기 어려워보이네요

관리자 메인 페이지에서 환경설정에서 pageInfo() 들어가보니까 무슨 설명서?? 처럼 표처럼 돼있는게 엄청 많더라고요.. 거기 upload_max_filesize가 21M으로 돼있더라고요.. 그래서 set_time_limit ( 0 );
ini_set('memory_limit', '21M');
ini_set('upload_max_filesize', '21M');
로 바꿔줬는데도 안돼요 ㅠㅠㅠ

post_max_size 를 추가해주면 될 듯 합니다. & upload_max_size 가 아니라 upload_max_filesize 입니다.

 

ini_set() 함수가 php.ini 설정을 바꾸지 않고도.. 해당 파일에 한하여 해당 설정이 적용되게 하는 함수입니다.

 

set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('post_max_size', '80M');
ini_set('upload_max_filesize', '80M');

set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('upload_max_filesize', '80M');
ini_set('post_max_size', '80M');
ini_set('max_execution_time', '80M');
ini_set('max_input_time', '80M');

이렇게 추가를 해줬는데... 그래도 엑셀파일이 업로드가 안되네요
들은 바로는 php.ini를 바꿔보라고 하는데,,, 어떻게 들어가는지도 모르겠고 경로도
/usr/local/php73/lib/php.ini 이렇게 되어있어서...
도와주세요 답변 부탁드립니다..

지금 적용한 코드로도 안된다면.. php.ini 를 수정해도 안되는 것은 동일합니다.

php.ini 수정 -> 웹서버(apache 등) 재시작 -> 모든 파일에 해당 설정이 적용되는 것이고,
ini_set() 함수는 php.ini 에 기본설정된 것과 별개로 해당파일에서만 다른 설정으로 적용될 수 있게 하는 것입니다.

지금 적용한 코드로 안된다면, php.ini 를 수정해도 안된다고 볼 수 있습니다.

php.ini 파일 수정은 리눅스 환경이라면 vi 에디터를 사용하여 수정을 해야 하는데.. 경험이 있지 않다면 쉽지 않은 편입니다.

일단은 ini_set() 함수로 해당파일에 적용하는 방법을 더 추천하겠습니다.
지금의 코드로 업로드가 안된다고 하였는데.. 원인을 찾는 것이 1차입니다. 원인을 찾는 것이 중요합니다.
용량(내용)이 작은 파일로 성공적으로 업로드되는 지를 먼저 확인해보았으면 합니다.
정말 용량 문제인지.. 다른 문제인지를 확인해야 합니다.

제 예상으로는.. ini_set() 코드가 들어갔기 때문에.. 용량문제가 아닌 다른 문제가 있을 가능성이 큽니다. 오류 메시지를 표시해주는 옵션을 추가하여 다른 오류가 있는지를 확인해 보는 것이 좋을 것 같습니다.

error_reporting(E_ALL);
ini_set("display_errors", 1);
set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('post_max_size', '80M');
ini_set('upload_max_filesize', '80M');

파일내용을 1/10로 줄여서 업로드는 해보셨는지요?
1/10 로 줄여서 업로드했을 때.. 정상처리된다면.. 용량 문제일 가능성이 있습니다.
이런식으로 실제 원인을 찾는 것이 중요합니다.

1/10 로 줄여서 업로드를 하는데도.. 문제가 있다면..

중간중간 코드마다

(기존코드)

echo 'aa';
exit;

(기존코드)

echo 'bb';
exit;

등으로 어디까지 정상 실행되고.. 어디서 부터 문제가 생기는지를 찾아나가면서, 원인지점 -> 원인을 찾아나가야 됩니다.

중간중간 이해가 잘 안되는 코드 부분 등이 있다면.. '구글 검색'을 통해 관련 자료를 찾아보는 것도 괜찮습니다.

계속해서 오리무중이라면... 제작의뢰 게시판에 의뢰를 해볼 수 있습니다.  https://sir.kr/request

set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('upload_max_filesize', '80M');
ini_set('post_max_size', '80M');
ini_set('max_execution_time', '80M');
ini_set('max_input_time', '80M');

코드에서 ,
ini_set('max_execution_time', '80M');
ini_set('max_input_time', '80M');
은 time 설정이기 때문에 초단위 숫자로 입력되어야 합니다.

이부분은 빼거나 300 등의 숫자로 바꾸어주어야 될 것 같습니다.

ini_set('max_execution_time', 300);
ini_set('max_input_time', 300);

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 126,562
© SIRSOFT
현재 페이지 제일 처음으로