![PHP 伺服器對檔案和目錄的權限已授予,但仍不允許](https://rvso.com/image/1447624/PHP%20%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%B0%8D%E6%AA%94%E6%A1%88%E5%92%8C%E7%9B%AE%E9%8C%84%E7%9A%84%E6%AC%8A%E9%99%90%E5%B7%B2%E6%8E%88%E4%BA%88%EF%BC%8C%E4%BD%86%E4%BB%8D%E4%B8%8D%E5%85%81%E8%A8%B1.png)
我在 Codeanywhere 上有 php 程式碼,我只是嘗試在伺服器上建立一個文件,但出現以下錯誤:
“警告:fopen(file.txt):無法開啟流:第 312 行 /home/cabox/workspace/index.php 中的權限被拒絕”
我使用 fopen($file, 'w')。使用“r”作為參數,它可以工作。
我詢問 CodeAnywhere 他們是否有任何限制來阻止用戶使用程式碼直接在伺服器上建立文件,但得到的答覆是沒有限制,只需查找如何授予權限。
首先對檔案和目錄使用 chmod
chmod 755 index.php(之後為777用於實驗目的)
但我仍然遇到上面顯示的錯誤訊息。所以我深入研究了伺服器各個級別的權限並將其顯示在下面,但我沒有看到任何奇怪的東西(根據我的貧乏知識)
/
[cabox@box-codeanywhere /]$ ls -ld
drwxr-xr-x 21 根 4096 4 月 19 日 03:09
/家/
[cabox@box-codeanywhere home]$ ls -ld
drwxr-xr-x 3 root root 4096 2014 年 6 月 16 日
/首頁/卡箱/
[cabox@box-codeanywhere ~]$ ls -ld
drwxrwxrwx 7 cabox cabox 4096 4 月 14 日 11:48
/home/cabox/工作區/
[cabox@box-codeanywhere 工作區]$ ls -ld
drwxrwxrwx 4 cabox cabox 4096 4 月 19 日 04:27
我無法更改權限/因為用戶名是根 我想那是因為我的用戶名是卡克斯
[cabox@box-codeanywhere 工作區]$ id
uid=500(cabox) gid=500(cabox) groups=500(cabox)
index.php 嘗試建立 file.txt 位於/home/cabox/工作區/
-rwxrwxrwx 1 cabox cabox 18608 四月 19 05:12 index.php
我究竟做錯了什麼?
先致謝!
答案1
經過多次實驗,我發現我的虛擬機器開發環境設定為Html5而不是php。 PHP 檔案運作正常,因為伺服器是 apache,但由於某種原因,我仍然無法理解,權限的管理是不同的。
將環境切換到PHP後,之前不起作用的指令又運作了,終於能夠解決問題了。
這是一個持保留態度的“解決方案”,因為我對此事的熟練程度相當有限
給您自己的使用者(cabox)775 權限沒有任何作用,因為只有「www-data」使用者才有權在網站執行時建立、修改、刪除伺服器上的檔案。
sudo chown -R www-data:www-data /home/cabox/workspace chmod 775 /home/cabox/workspace
這成功了。
現在,在 codeanywhere 上,如果我將使用者名稱更改為“www-data”,我將失去在伺服器上工作、建立、修改、刪除檔案的能力。我認為解決方案是將權限設定為使用者(cabox)和群組(www-data)並賦予他們相同的權限,但到目前為止還沒有奏效,所以仍然需要弄清楚這一點
希望對以後遇到相同問題的人有幫助。我花了一周時間,相當令人沮喪:)
答案2
您可能想要更改檔案或目錄的擁有者
chown 使用者名稱 -R 你的資料夾
。我遇到了同樣的問題,這解決了我的問題..
答案3
也許這可行,我遇到了同樣的問題,經過 3 個小時的谷歌搜尋後我嘗試了這個:
資料夾權限
完成安裝所需要做的最後一件事是設定資料夾權限。為此,請打開命令列並輸入:
sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chown -R vm_username:www-data ~/workspace
至少對我來說,解決我遇到的許可問題。