php_admin_value open_basedir 引起的上傳文件失敗解決方法


 

為了安全,我們通常會在虛擬主機設置中,加入這一行
php_admin_value open_basedir "/usr/local/apache/htdocs/www"
但這會導致move_uploaded_file不能讀取臨時目錄中的上傳文件,導致上傳文件失失敗。

一般會提示以下錯誤:
Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/tmp/phpqwg5rO) is not within the allowed path(s): (/usr/local/apache/htdocs/www) in /usr/local/apache/htdocs/www/includes/lib_common.php on line 3130

解決方法:
將上傳文件的臨時目錄加入到php_admin_value open_basedir后面,最后看起來是這樣的:
<VirtualHost *:80>

    php_admin_value open_basedir "/usr/local/apache/htdocs/www:/tmp"
</VirtualHost>
注意:兩個目錄之間是冒號隔開。

 

把PHP腳本操作限制在web目錄可以避免程序員使用copy函數把系統文件拷貝到web目錄。move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM