>  기사  >  백엔드 개발  >  PHP가 큰 이미지를 업로드할 수 없으면 어떻게 해야 합니까?

PHP가 큰 이미지를 업로드할 수 없으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2022-01-20 09:34:332148검색

PHP가 큰 이미지를 업로드할 수 없는 문제에 대한 해결책: 1. php.ini를 열고 필요한 값으로 설정합니다. 3. "file_uploads = on"을 확인합니다. . 권한 설정 최대 업로드 파일 크기.

PHP가 큰 이미지를 업로드할 수 없으면 어떻게 해야 합니까?

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서 큰 사진을 업로드할 수 없으면 어떻게 해야 합니까?

대용량 파일을 업로드할 수 없는 PHP를 위한 완벽한 솔루션

대용량 파일을 업로드할 수 없는 php.ini를 위한 완벽한 솔루션

1. php.ini를 엽니다(여는 방법은 말할 것도 없고 Baidu에는 많습니다).

2. post_max_size 찾기

최대 양식 제출 값은 단일 업로드 파일의 크기를 제한하지 않지만 전체 양식의 제출 데이터를 제한합니다.

기본값은 8m이며 필요한 값으로 설정하세요. . 이 매개변수는 upload_max_filesize보다 크게 설정하는 것이 좋습니다.

3. 파일 업로드 검색

http 스위치를 통한 파일 업로드 허용 여부는 file_uploads = on

4을 확인하세요. 서버에 임시 파일이 저장되는 위치입니다. 지정하지 않으면 시스템 기본값이 사용됩니다. 임시 폴더

시스템 오류에 "xxx 임시 디렉터리 xxx" 메시지가 표시되면 이 디렉터리에 대한 유효한 디렉터리를 설정해야 합니다. 걱정하지 마세요

5. 파일 업로드가 허용되는 upload_max_filesize의 최대값을 찾으세요. 기본값은 2m이며, post_max_size 값을 초과하지 않는 것이 좋습니다. 매개변수는 post_max_size 값에 의해 제어되기 때문에 (upload_max_filesize를 1g으로 설정하고 post_max_size를 2m로만 설정하더라도 2m보다 큰 파일은 post_max_size 값에 의해 제어되기 때문에 업로드되지 않습니다)

6. 8m보다 큰 파일을 업로드하려면 다음 매개변수도 설정해야 합니다.

max_execution_time = 600을 찾습니다. 각 PHP 페이지를 실행할 최대 시간 값(초), 기본값은 30초

max_input_time = 600; 각 PHP 페이지가 데이터를 수신하는 데 필요한 최대 시간은 60초입니다.

memory_limit = 8m; 각 PHP 페이지에 필요한 최대 메모리, 기본값은 8m입니다.

nginx 방법은 대용량 파일 업로드에 완벽한 솔루션입니다. 방법

1. Client_body_buffer_size는 속도를 고려하여 최대한 크게 설정해야 합니다. 설정이 너무 작아서 업로드된 파일을 항상 디스크에 써야 하는 경우 속도가 너무 느려집니다.

2.client_body_temp_path 경로에 쓰기 권한이 있어야 합니다. 이는 명백한 실수입니다. 수정하세요

3.client_max_body_size는 업로드된 파일의 최대값을 설정합니다. 이는 보안 고려사항에 따른 것입니다. 일반 사용자는 너무 큰 파일을 업로드하지 않거나 기본적으로 업로드하지 않을 것이라고 생각합니다.

client_max_body_size 100m로 설정하거나 귀하의 비즈니스에 따라 이 값을 설정할 수 있습니다.

nginx 구성.

코드는 다음과 같습니다.

cd /export/servers/nginx/conf/nginx.conf 이 구성 파일의 server 섹션에서 client_max_body_size 필드가

location / {
root html;
index index.html index.htm;
client_max_body_size 1000m;
}

에 추가되어 작동하지 않습니다. 어떻게 다시 시작해도 마찬가지입니다. 나중에 일반 구성 파일에서 하위 구성 파일을 찾았습니다.

코드는 다음과 같습니다.

sendfileon;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include domains/*;
#include domains/chat.local;
#include domains/chat.erp.com;
#include domains/support.chat.com;
#include douains/chat.com;
server {
listen 80;
server_name localhost;

그래서 하위 구성 파일을 찾아서 하위 구성 파일에서 수정했습니다. 하위 구성 파일 구성은 다음과 같습니다.

코드는 다음과 같습니다.

server
{
listen 80;
server_name chat.erp.360buy.com;
# access_log /export/servers/nginx/logs/chat.erp.360buy.com;
location / {
proxy_pass;
client_max_body_size 1000m;
}
}

/export/servers/nginx/sbin/nginx -s reload로 다시 시작하면 업로드 파일 크기 제한 문제가 해결됩니다.

저의 해결 과정을 공유해 드리며, 모두에게 도움이 되기를 바랍니다.

그래도 해결되지 않으면 PHP 양식 설정에 문제가 있는지 확인해야 합니다.

이 코드는 두 개의 파일로 나누어져 있습니다. 하나는 upload.html이고 다른 하나는 upload.php

upload입니다. .html

코드는 다음과 같습니다.

<form enctype=multipart/form-data action=upload.php method=post>
<input type=hidden name=max_file_size value=100000>
<input name=userfile type=file>
<input type=submit value=上传文件>
</form>

그 중

주의하세요

파일을 업로드하려면 multipart/form-data로 지정해야 합니다. 그렇지 않으면 서버가 해당 태그를 지정해야 합니다. 무엇을 해야할지 모르겠습니다.

upload.html 파일에 있는 max_file_size 양식 옵션의 숨겨진 값 필드에 해당 값을 설정하여 업로드되는 파일의 크기를 제한할 수 있다는 점에 주목할 필요가 있습니다.

max_file_size 값은 브라우저에 대한 제안일 뿐이며 실제로 쉽게 우회할 수 있습니다. 따라서 브라우저 제한을 제한하기 위해 이 값을 사용하지 마십시오. 실제로 PHP 설정의 최대 업로드 파일 크기는 유효하지 않습니다. 그러나 양식에 max_file_size를 포함하는 것이 더 좋습니다. 그러면 사용자가 파일이 너무 크다는 것을 발견하기 위해 대용량 파일이 업로드되기를 기다리는 번거로움을 덜 수 있습니다.

upload.php

코드는 다음과 같습니다.

$f=&$http_post_files[&#39;myfile&#39;];
$dest_dir=’uploads’;//设定上传目录
$dest=$dest_dir.’/’.date(ymd)._.$f[&#39;name&#39;];//设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f[&#39;tmp_name&#39;],$dest);
chmod($dest, 0755);//设定上传的文件的属性

또는

<?copy($_files[myfile][tmp_name],$_files[myfile][name]);?>

위 예제의 $_files 배열 내용은 다음과 같습니다. 파일 업로드 필드의 이름은 userfile이라고 가정합니다(이름은 임의로 지정할 수 있음)

추천 학습: "

PHP Video Tutorial

"

위 내용은 PHP가 큰 이미지를 업로드할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.