作者beatada (爱睡喵)
看板PHP
标题[请益] 上传档案问题 有CONTENT_LENGTH空$_FILES
时间Fri Feb 10 16:06:04 2012
遇到一个奇怪的问题,明明 PHP 有收到档案,
$_SERVER['CONTENT_LENGTH'] 不是空的,但 $_FILES 阵列却是空的,
而 upload tmp dir 里也没有档案。
以下是我的测试,没发现问题在哪,不知道各位有没有什麽建议?
测试用的 upload_test.php
<?php
if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
echo 'var_dump($_SERVER[\'CONTENT_LENGTH\']) : ';
var_dump($_SERVER['CONTENT_LENGTH']);
echo 'var_dump($_FILES) : ';
var_dump($_FILES);
} else {
echo 'there\'s no file uploaded'."\n";
}
?>
测试没有档案上传:
root@m:/var/www# curl localhost/upload_test.php
there's no file uploaded
测试上传:
传了一个 1.1K 的文字挡上去,有传到 PHP,但 $_FILES 阵列印出来却是空的:
root@m:/var/www# curl localhost/upload_test.php -F
[email protected]
var_dump($_SERVER['CONTENT_LENGTH']) : string(4) "1287"
var_dump($_FILES) : array(0) {}
检查 apache/php.ini 相关的设定,档案没有超出上传限制
safe_mode Off Off
file_uploads On On
max_execution_time 3000 3000
max_file_uploads no value no value
max_input_nesting_level 64 64
max_input_time 3000 3000
max_input_vars 1000 1000
post_max_size 128M 128M
upload_max_filesize 128M 128M
upload_tmp_dir /var/tmp/php /var/tmp/php
suhosin.upload.disallow_binary 0 0
suhosin.upload.disallow_elf 1 1
suhosin.upload.max_uploads 25 25
suhosin.upload.remove_binary 0 0
suhosin.upload.verification_script no value no value
检查 upload_tmp_dir 资料夹权限,全开通行无阻
root@m:/etc/php5# ll -d /var/tmp/php
drwxrwxrwx 2 www-data www-data 4096 2012-02-10 13:44 php/
环境是
Ubuntu-Server 11.10 (Oneiric Ocelot) + Apache 2.2 + PHP 5.3.6
以 apache php module 方式运行
root@m:/etc/php5/apache2# dpkg -l |grep apache2
ii apache2 2.2.20-1ubuntu1.1 Apache HTTP Server metapackage
ii apache2-doc 2.2.20-1ubuntu1.1 Apache HTTP Server documentation
ii apache2-mpm-prefork 2.2.20-1ubuntu1.1 Apache HTTP Server - traditional non-threaded model
ii apache2-utils 2.2.20-1ubuntu1.1 utility programs for webservers
ii apache2.2-bin 2.2.20-1ubuntu1.1 Apache HTTP Server common binary files
ii apache2.2-common 2.2.20-1ubuntu1.1 Apache HTTP Server common files
ii libapache2-mod-php5 5.3.6-13ubuntu3.5 server-side, HTML-embedded scripting language (Apache 2 module)
root@m:/etc/php5# php --version
PHP 5.3.6-13ubuntu3.5 with Suhosin-Patch (cli) (built: Feb 9 2012 05:59:54)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.26.239.135
※ 编辑: beatada 来自: 163.26.239.135 (02/10 16:07)
1F:推 kerash:你是用 form 上传? 有没有 encrypt? 02/10 16:13
2F:→ beatada:噢,我是用 curl 直接在终端机传上去的,不用 enctype 02/10 20:04
3F:→ beatada:Debug 时 curl 很好用 02/10 20:04
4F:→ beatada:另外终於抓到问题在哪,另外回覆一篇 02/10 20:05