為了安全,我們通常會在虛擬主機設置中,加入這一行
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的值。