신입 개발자입니다. 도와주세요..
어느 사이트 회원현황에 엑셀 업로드를 해야하는데 파일 용량이 크거나 해서 업로드가 안된다고 합니다.
그래서 값을 변경해야하는데 어떻게 해야하는지 도와주세요.
include_once('./_common.php');
// 상품이 많을 경우 대비 설정변경
set_time_limit ( 0 );
ini_set('memory_limit', '80M');
ini_set('upload_max_size', '80M');
밑에 max_size는 제가 넣어본 것인데 새로고침을 해도 안되네요...
오늘 첫출근이고... 이것 밖에 글을 못 쓴 점 죄송합니다.
답변 6개
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');
답변에 대한 댓글 7개
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');
ini_set("display_errors", 1);
을 추가하면 어디서 어떤 오류가 나는지 어떻게 알 수 있나요?
해당 파일을 브라우저에서 실행할 때 (오류가 있는 경우) 표시됩니다.
1/10 로 줄여서 업로드했을 때.. 정상처리된다면.. 용량 문제일 가능성이 있습니다.
이런식으로 실제 원인을 찾는 것이 중요합니다.
1/10 로 줄여서 업로드를 하는데도.. 문제가 있다면..
중간중간 코드마다
(기존코드)
echo 'aa';
exit;
(기존코드)
echo 'bb';
exit;
등으로 어디까지 정상 실행되고.. 어디서 부터 문제가 생기는지를 찾아나가면서, 원인지점 -> 원인을 찾아나가야 됩니다.
중간중간 이해가 잘 안되는 코드 부분 등이 있다면.. '구글 검색'을 통해 관련 자료를 찾아보는 것도 괜찮습니다.
계속해서 오리무중이라면... 제작의뢰 게시판에 의뢰를 해볼 수 있습니다. https://sir.kr/request
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);
댓글을 작성하려면 로그인이 필요합니다.
phpinfo 모르시면 구글에 검색해서 하나씩 알아보셔야할거같네요
php설정자체를 바꿔줘야하는작업이라 답변해드리기 어려워보이네요
답변에 대한 댓글 1개
ini_set('memory_limit', '21M');
ini_set('upload_max_filesize', '21M');
로 바꿔줬는데도 안돼요 ㅠㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
먼저 phpinfo() 하셔서 지정된 용량 확인하세요.
그리고 php설정파일인 php.ini 에서
upload_max_filesize
post_max_size
를 늘려주시면됩니다.
memory_limit는 일반적으로 128M로 지정되어 있는데 더 늘리실 꺼면 이부분도 수정해 주세요.
리눅스 쓰시면 /etc/php.ini 에서 수정해 주시고 아파치 재 시작해 주시면 됩니다.
답변에 대한 댓글 2개
<?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');
일부분을 캡쳐해봅니다.
임의의 파일을 만드시고 <?php phpinfo(); ?> 하시고 브라우저에서 그 파일에 접근하시면 설정 정보가 표시 됩니다.
거기서 업로드 용량관련 설정 정보들을 확인하시면 최대 업로드 사이즈를 알 수 있습니다.
일반적으로 upload_max_filesize, post_max_size 값중 작은 값으로 설정되니 ini_set으로 이부분을 phpinfo() 위에 적용해 보시고 정상적으로 적용되는지 확인 하시면 됩니다.
안되시면 서버에서 php.ini 파일을 직접 수정하셔야 합니다. set_time_limit 와 memory_limit 는 업로드 시간이 오래 걸려 expire 이 표시 되거나 파일용량이 128M를 넘을때 수정해 주시면 됩니다
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
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 이렇게 되어있어서...
도와주세요 답변 부탁드립니다..