爲了安全在服務器虛拟主機上添加了:
php_admin_value open_basedir “usr/local/apache/htdocs/www”
但這會導緻move_uploaded_file不能讀取臨時目錄中(zhōng)的上傳文件,導緻上傳文件失敗。提示錯誤如下(xià):
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後面,最後看起來是這樣的:
php_admin_value open_basedir “usr/local/apache/htdocs/www:/tmp”
注意兩個路徑用:隔開(kāi)
把PHP腳本操作限制在web目錄可以避免程序員(yuán)使用copy函數把系統文件拷貝到web目錄。 move_uploaded_file不受open_basedir的限制,所以不必修改php.ini裏upload_tmp_dir的值。
另外(wài)要注意的一(yī)點是,當這個在兩個虛拟主機之間,長傳文件的時候會出現問題,比如:
我(wǒ)(wǒ)現在有兩個域名:分(fēn)别是www.aaa.com www.bbb.com
www.aaa.com的配置加了一(yī)行:
php_admin_value open_basedir “usr/local/apache/htdocs/aaa:/tmp”
www.bbb.com的配置加了一(yī)行:
php_admin_value open_basedir “usr/local/apache/htdocs/bbb:/mp”
這時候如果通過www,aaa.com上傳文件到www.bbb.com就會失敗,反之亦然!
php_admin_value open_basedir “usr/local/apache/htdocs/www”
但這會導緻move_uploaded_file不能讀取臨時目錄中(zhōng)的上傳文件,導緻上傳文件失敗。提示錯誤如下(xià):
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後面,最後看起來是這樣的:
php_admin_value open_basedir “usr/local/apache/htdocs/www:/tmp”
注意兩個路徑用:隔開(kāi)
把PHP腳本操作限制在web目錄可以避免程序員(yuán)使用copy函數把系統文件拷貝到web目錄。 move_uploaded_file不受open_basedir的限制,所以不必修改php.ini裏upload_tmp_dir的值。
另外(wài)要注意的一(yī)點是,當這個在兩個虛拟主機之間,長傳文件的時候會出現問題,比如:
我(wǒ)(wǒ)現在有兩個域名:分(fēn)别是www.aaa.com www.bbb.com
www.aaa.com的配置加了一(yī)行:
php_admin_value open_basedir “usr/local/apache/htdocs/aaa:/tmp”
www.bbb.com的配置加了一(yī)行:
php_admin_value open_basedir “usr/local/apache/htdocs/bbb:/mp”
這時候如果通過www,aaa.com上傳文件到www.bbb.com就會失敗,反之亦然!