PHP無法上傳文件,都是php_admin_value open_basedir惹的禍

發布時間:2020年08月26日      浏覽次數:526 次
爲了安全在服務器虛拟主機上添加了:

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就會失敗,反之亦然!
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!