[英]file_put_contents permission denied — any solution without 777?
我正在一個頁面上,用戶可以在其中使用表單上傳圖像/視頻。 該代碼包括以下行:
move_uploaded_file($ tempfile,$ newfile)
然后,將根據此圖像/視頻自動創建縮略圖,並將其上傳到服務器,如下所示:
file_put_contents($ thumbname,$ thumbnail)
現在,圖像的上傳可以正常工作,但是縮略圖無法保存,我得到以下響應:
警告:file_put_contents(thumbnails / 1.jpg):無法打開流:第17行的SITEURL / upload.php中的權限被拒絕
我的兩個問題:
為什么用戶具有通過move_uplaoded_file
上傳圖像但通過file_put_contents
上傳縮略圖的權限被拒絕? 請注意,圖像和縮略圖這兩個文件都被上載到同一文件夾。 用戶是否應該既沒有權限又沒有權限?
我確實意識到已經有一個這樣的線程,但是建議的答案是運行chmod 777
。 但是我讀到將文件夾設置為777 始終存在安全風險。 沒有777,有沒有辦法解決此問題?
再次,我不明白為什么我必須將file_put_contents
的權限更改為777,而move_uploaded_file
在755才可以正常工作。
采用:
// PHP code:
echo `whoami`;
找出運行PHP的用戶身份。
然后檢查擁有thumbnails
的服務器
# log in via SSH and run:
ls -l | grep thumbnails
這應該向您顯示這樣的一行(取自我自己的服務器):
drwxr-xr-x 8 niet niet 4096 Jul 15 12:12 thumbnails
在上面的示例中,該文件夾由用戶niet
擁有,並且位於組niet
。 如果與whoami
,則需要更改文件夾的所有者 。 例如,如果whoami
給user3041398
,您將執行以下操作:
chown user3041398 thumbnails
再次運行ls
行,您現在應該在輸出中看到您的用戶名,並且PHP應該能夠寫入該文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.