我在 Codeanywhere 上有 php 代码,我只是想在服务器上创建一个文件,但却出现以下错误:
“警告:fopen(file.txt):无法打开流:/home/cabox/workspace/index.php 第 312 行中的权限被拒绝”
我使用 fopen ($file, 'w')。以'r'作为参数,它可以工作。
我询问 CodeAnywhere 是否有任何限制来阻止用户使用代码直接在服务器上创建文件,但他们回答说没有限制,只需要查找如何授予权限。
首先对文件和目录使用 chmod
chmod 755 index.php(之后出于实验目的改为 777)
但我仍然面临上面显示的错误信息。所以我深入研究了服务器各级的权限,并将它们显示在下面,但我没有看到任何奇怪的东西(根据我有限的知识)
/
[cabox@box-codeanywhere /]$ ls -ld
drwxr-xr-x 21 root root 4096 4月 19 03:09
/家/
[cabox@box-codeanywhere home]$ ls -ld
drwxr-xr-x 3 root root 4096 2014 年 6 月 16 日
/主页/cabox/
[cabox@box-codeanywhere ~]$ ls -ld
drwxrwxrwx 7 cabox cabox 4096 4月 14 11:48
/主页/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 位于/主页/cabox/工作区/
-rwxrwxrwx 1 cabox cabox 18608 4月 19日 05:12 index.php
我究竟做错了什么?
提前致谢!
答案1
经过多次试验,我发现我将虚拟机开发环境设置为 Html5 而不是 php。由于服务器是 apache,因此 php 文件可以正常工作,但出于某种我仍然不明白的原因,权限管理有所不同。
将环境切换到 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
至少对我来说,解决了我遇到的权限问题。