在apache配置文件中設置PHP上傳臨時目錄在服務器上配置webmail(比如我最喜歡的SquirrelMail)時,出于服務器安全考慮,一般在apache配置文件中作php_admin_value open_basedir <path to web root>的限制,防止php程序瀏覽整個硬盤,這個限制在使用虛擬主機的服務器上使用的更多。然而這個安全措施帶來一個隱含的限制,就是php的上傳臨時目錄(默認為/tmp)無法被php程序訪問,導致webmail中上傳附件時失敗,比如SquirrelMail提示“Could not move/copy file. File Not Attached.”(“無法移動/復制文件。文件需要被附在郵件上”)。通過在apache配置文件中添加一個設置php_admin_value upload_tmp_dir <path to temp dir>讓php程序在上傳時使用指定的目錄作為臨時文件目錄。當然,要注意此目錄的權限設置要讓apache的運行用戶能寫入。
學習PHP難免總是會遇到一些莫名其妙的問題,就是搞不懂為什么,明明自己設置的都是正確的,但就是出問題,這不,今天我又遇到了一個這樣的問題,浪費了我好幾個小時,才弄明白是哪里出了問題,真是郁悶死了。 今天直接找了一個上傳文件的php源代碼進行測試,總是顯示錯誤,提示為錯誤代碼是2。我就在網上找了找資料。<!--使用POST上傳文件示例:upload_file_post.php----------------------------><form enctype="multipart/form-data" action="receive_file_post.php" method="post">您的大名: <input type=text name=user><br><input type="hidden" name="MAX_FILE_SIZE" value="30000">上傳文件: <input name="userfile" type="file"><br><br><input type="submit" value="開始上傳"></form>其中, 請注意<form enctype="multipart/form-data"......>這是一個標簽,我們要實現文件的上傳,必須指定為multipart/form-data,否則服務器將不知道要干什么。值得注意的是文件upload_file_post.php中表單選項 MAX_FILE_SIZE 的隱藏值域,通過設置其Value(值)可以限制上載文件的大小。MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望于該值。實際上,PHP 設置中的上傳文件最大值,是不會失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因為它可以避免用戶在花時間等待上傳大文件之后才發現該文件太大了的麻煩。<!--使用POST上傳文件示例:recieve_file_post.php----------------------------><?php$upload_dir = './upload_files/';if (!move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_dir.$_FILES['userfile']['name'])) echo "文件上傳失敗,錯誤信息:".$_FILES['userfile']['error']."<br>";else echo "文件".$_FILES['userfile']['name']."上傳成功<br>";?>以上范例中 $_FILES 數組的內容如下所示。我們假設文件上傳字段的名稱為 userfile(名稱可隨意命名) $_FILES['userfile']['name'] 客戶端機器文件的原名稱。$_FILES['userfile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。$_FILES['userfile']['size'] 已上傳文件的大小,單位為字節。$_FILES['userfile']['tmp_name'] 文件被上傳后在服務端儲存的臨時文件名。$_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼 如果名為file1.doc和file2.doc文件被上傳,則$_FILES['userfile']['name'] [0]將包含文件file1.doc的名稱,而$_FILES['userfile']['name'] [1]則將包含文件file.doc的名稱。值:0; 沒有錯誤發生,文件上傳成功。值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。值:3; 文件只有部分被上傳。值:4; 沒有文件被上傳。 我上傳的一首MP3,大概4M多,我看錯誤代碼是2,開來是我的HTML 表單中 MAX_FILE_SIZE 選項指定的值太小了,我看了一下,數值是30000,我又查了一下,這個設置的單位是字節,看來的確是這個問題了,把值設置大點不就OK了嗎,我一下改為了10M,看來是沒問題了。然后進行測試,可又出現了錯誤代碼1。哎!怎么還有問題啊。不過沒關系,一步步來嗎。 不就是錯誤代碼1嗎,哦,原來是upload_max_filesize限制值太小了,二話不說,改為10M了。哈哈。。。。。。測試,暈,還是不行。我就繼續找php.ini設置的資料??吹较旅娴臇|西:PHP上傳文件涉及到的參數PHP默認的上傳限定是最大2M,想上傳超過此設定的文件,需要調整PHP、apache等的一些參數. 下面,我們簡要介紹一下PHP文件上傳涉及到的一些參數: file_uploads是否允許通過HTTP上傳文件的開關,默認為ON即是開 upload_tmp_dirupload_tmp_dir用來說明PHP上傳的文件放置的臨時目錄,要想上傳文件,得保證服務器沒有關閉臨時文件和有對文件夾的寫權限,如果未指定則PHP使用系統默認值 upload_max_filesize允許上傳文件大小的最大值,默認為2M post_max_size控制在采用POST方法進行一次表單提交中PHP所能夠接收的最大數據量。如果希望使用PHP文件上傳功能,則需要將此值改為比upload_max_filesize要大 max_input_time以秒為單位對通過POST、GET以及PUT方式接收數據時間進行限制。如果應用程序所運行環境處在低速鏈路上,則需要增加此值以適應接收數據所需的更多時間 memory_limit為了避免正在運行的腳本大量使用系統可用內存,PHP允許定義內存使用限額。通過memory_limit變量來指定單個腳本程序可以使用的最大內存容量變量memory_limit的值應當適當大于post_max_size的值 max_execution_timemax_execution_time設置了在強制終止腳本前PHP等待腳本執行完畢的時間,此時間以秒計算。當腳本進入了一個無限循環狀態時此變量非常有用。然而,當存在一個需要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會導致操作失敗。在這樣的情況下必須考慮將此變量值增加,以避免PHP在腳本正在執行某些重要過程的時候將腳本關閉 對于linux主機,可能在/etc/httpd/conf.d/access.conf/下面里面還有php.conf 文件,這個文件可能會解決一些系統的文件大小限制問題我就照著上邊的,把限制都改得超大,這回應該沒有問題了吧,都設置好了。測試一下嘍。真郁悶,還是提示錯誤代碼1。不對啊,我設置的都很大啊,不會有問題的。怎么回事呢。 算了,呆會再研究,先讓同學玩吧,去買飯了,不然呆會餐廳沒飯了,呵呵。。肚子餓了! 回來了,繼續研究那個煩人的問題。我上傳個小文件嗎。上傳個Word文檔,才兩百多K,哦耶!成功一次。弄個1M多的壓縮包,又成功了,再試試我那歌曲了。哎!還是不成功??戳丝茨鞘赘栌?M多,上傳個小店的歌曲了。我找了個2M多的歌曲上傳,還是不成功。再試個不到2M的歌吧,居然成功了??磥硎遣荒苌蟼鞔笥?M的東西了。奇怪啊,不大對啊,我設置的限制是10M 啊,遠遠大于了。難道是我設置沒成功。我又看了看設置,沒有問題的。 。。。。。。。。。。。。 我不停的想啊,累死了,2M........這不就是php.ini設置上傳限制的默認值嗎,我改了怎么沒有成功呢。哦??可能是服務器得重啟一下,以前也經常遇到非重啟服務器才能解決問題的情況。于是我就重啟的Apache(我用的是這個),再試試了。成功了?。∵@次真的是搞定了。 以前在配置PHP環境的時候,也遇到過類似的情況,感覺配置的環境沒有問題,可就是測試不成功,一般都是需要重啟Apache等服務器了。所以呢,以后,已更改類似php.ini等文件后,一定要記得重啟服務器。實例:php_admin_value open_basedir /www/mail.yourdomaim.comphp_admin_value upload_tmp_dir /www/mail.yourdomaim.com/temp當然,從來不對php作限制的人是不會遇到這個問題的(只會遇到服務器被黑)。
http://hi.baidu.com/zhenyk/blog/item/0015713d7c89e3ed3c6d9775.html
這篇文章寫得非常詳細,幫助我解決了問題,非常地感謝~~頂0踩新聞熱點
疑難解答
圖片精選