[請益]無法上傳檔案 有CONTENT_LENGTH空$_FILES

看板PHP作者 (愛睡喵)時間13年前 (2012/02/10 16:06), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/2 (看更多)
遇到一個奇怪的問題,明明 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)

02/10 16:13, , 1F
你是用 form 上傳? 有沒有 encrypt?
02/10 16:13, 1F

02/10 20:04, , 2F
噢,我是用 curl 直接在終端機傳上去的,不用 enctype
02/10 20:04, 2F

02/10 20:04, , 3F
Debug 時 curl 很好用
02/10 20:04, 3F

02/10 20:05, , 4F
另外終於抓到問題在哪,另外回覆一篇
02/10 20:05, 4F
文章代碼(AID): #1FDC_o74 (PHP)
文章代碼(AID): #1FDC_o74 (PHP)