Permissions

PHP move_uploaded_file 權限僅在 RHEL 上被拒絕

  • June 13, 2017

我的 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再移動,或者使用絕對路徑。

引用自:https://unix.stackexchange.com/questions/369749