PHP move_uploaded_file 權限僅在 RHEL 上被拒絕
我的 PHP 腳本用於用他的照片註冊新使用者。
在 Debian 上,一切都很好,但是當我在我的伺服器 RHEL 上安裝時,問題就出現了。
目錄 /tmp/ 權限是 777,“upload/”有 777 和 chown apache:apache。
以下是 httpd 的 error_log 片段:
$$ Wed Jun 07 15:25:29.363766 2017 $$ $$ :error $$ $$ pid 22867 $$ $$ client 10.31.242.73:49624 $$PHP 警告:move_uploaded_file(upload/1268_org.jpg):未能打開流:第 76 行 /var/www/html/inc/classes/user.inc.php 中的權限被拒絕,引用者:http: //10.31.242.72/ index2.php?mnu=10041 $$ Wed Jun 07 15:25:29.363808 2017 $$ $$ :error $$ $$ pid 22867 $$ $$ client 10.31.242.73:49624 $$PHP 警告:move_uploaded_file(): Unable to move ‘/tmp/phpmY6k8j’ to ‘upload/1268_org.jpg’ in /var/www/html/inc/classes/user.inc.php on line 76, referer: http:// /10.31.242.72/index2.php?mnu=10041
我不知道,這有什麼問題。也許我跳過了什麼?
我在這個網站上找到了解決方案 這是
SELinux
怪罪。我剛剛通過鍵入將 httpd_sys_rw_content_t 添加到上傳目錄:semanage fcontext -a httpd_sys_rw_content_t "/var/www/html/upload(/.*)?"
。
你
chdir()
在移動文件之前有嗎?如果您不這樣做,該文件將移至我的“upload/1268_org.jpg”,但相對於 /var/www/html/inc/classes,這將導致移至/var/www/html/inc/classes/upload/1268_org.jpg
,並且絕對不是您的預期位置。解決方法:先chdir再移動,或者使用絕對路徑。