由于php每天要接收其它服務(wù)器post過來的文件
比如我在:192.168.1.147上用下面這條命令
wget http://192.168.1.148/upload.php --post-file=msg.log
這個msg.log 有50M,進行post msg.log這個文件到148服務(wù)器的php上存儲,進行入庫
首先說明:
不要問我怎么不直接復制文件,要用php接收?
我現(xiàn)在討論的是這個問題,謝謝。
原因:
首次調(diào)用出現(xiàn)了:
HTTP request sent, awaiting response... 413 Request Entity Too Large
我按照網(wǎng)上的教程改nginx配置
改為:
client_max_body_size 100m;
滿以為解決問題,再次執(zhí)行報錯。
HTTP request sent, awaiting response... 502 Bad Gateway
網(wǎng)上有的說php.ini要配置,但是我的php.ini 配置是64M
max_execution_time 300 300
max_file_uploads 20 20
max_input_nesting_level 64 64
max_input_time 60 60
max_input_vars 1000 1000
memory_limit 128M 128M
open_basedir no value no value
output_buffering 4096 4096
output_handler no value no value
post_max_size 64M 64M
upload_max_filesize 64M 64M
都找了好多,都是說配置php.ini, nginx.conf,還有php-fpm.conf的request_terminate_timeout=0,
最后沒用,自己試試就知道了,不多說了,多謝好人!
歡迎選擇我的課程,讓我們一起見證您的進步~~
nginx配置:
keepalive_timeout 600;
proxy_send_timeout 600;
client_max_body_size 200M;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 1024k;
fastcgi_buffers 8 1024k;
fastcgi_busy_buffers_size 1024k;
fastcgi_temp_file_write_size 1024k;
proxy_ignore_client_abort on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 600;
client_body_timeout 600;
sendfile on;
send_timeout 600;
php的配置或php-fpm上傳大小配置及post大小也需要修改
根據(jù)你的實際情況修改上邊的配置吧
具體原因不清楚, 不過502錯誤一般都是PHP那邊出了問題
不是沒響應,就是響應時間過長,等。
這里已經(jīng)和nginx沒什么關(guān)系了
我在Xubuntu 14.04上用測試PHP CLI Server,只配置了下面兩條,其他都是默認配置,就能上傳90多MB的ZIP包了.
upload_max_filesize=100M
post_max_size=128M
php -S 127.0.0.1:8080 -t /png/www/example.com/public_html/
// chmod 777 /png/www/example.com/public_html/app/yab/static/
// http://127.0.0.1:8080/app/yab/upload.php
<?php
if(!empty($_FILES)){
$uploaddir = '/png/www/example.com/public_html/app/yab/static/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
exit();
}
?>
<form enctype="multipart/form-data" action="./upload.php" method="POST">
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
輸出:
File is valid, and was successfully uploaded.
Here is some more debugging info:Array
(
[userfile] => Array
(
[name] => firefox.zip
[type] => application/zip
[tmp_name] => /tmp/phpG1PdtU
[error] => 0
[size] => 93938426
)
)
同時本地測試了Nginx + PHP-FPM,Nginx只修改了下面這個配置:
client_max_body_size 128M;
經(jīng)過我測試,上傳文件是可以上傳成功的,但是我用wget --post-file 就返回502錯誤
wget可能有限制大文件上傳,
用curl命令搞定:
curl -T "msg.log" "http://192.168.1.148/upload.php"
謝謝大家 結(jié)貼!
你把php的執(zhí)行時間調(diào)大一點,另外上傳超時也調(diào)大一點。
set_time_limit(),max_input_time之類的。你是不是第一次調(diào)完后再上傳會等一會兒才報502錯?