看板 PHP 關於我們 聯絡資訊
遇到一個奇怪的問題,明明 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 file=@test.txt 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)
kerash:你是用 form 上傳? 有沒有 encrypt? 02/10 16:13
beatada:噢,我是用 curl 直接在終端機傳上去的,不用 enctype 02/10 20:04
beatada:Debug 時 curl 很好用 02/10 20:04
beatada:另外終於抓到問題在哪,另外回覆一篇 02/10 20:05