在我的phpinfo
配置中,我看到以下内容:
User/Group www-data(33)/33
在我的目录中,/var/www/html/pluto-php/public/
我看到以下内容data directory inside this path:
4 drwxrwxrwx 2 www-data www-data 4096 Sep 19 23:25 data
我还看到以下内容pluto-php directory
4 drwxr-xr-x 8 root root 4096 Sep 16 21:49 pluto-php
我将数据目录的所有者和组设置为 www-data。不知何故,在完成所有这些操作之后,我在php code
运行 php 脚本时仍然收到此错误,该脚本在数据目录中创建一个目录:
Warning: mkdir(): Permission denied in /var/www/html/pluto-php/vendor/pluto/src/Pluto/Stdlib/FilesystemUtils.php on line 32
我尝试过,apache2ctl restart
但没有任何效果。
我已经按照谷歌搜索中的每个教程进行操作,但还是卡在这里。
更新:
这是我的进程列表
root@yonaton-Lenovo-V570:/var/www/html# ps aux | grep apache
root 3234 0.0 0.6 409908 37092 ? Ss Sep28 0:09 /usr/sbin/apache2 -k start
www-data 8516 0.3 0.2 410888 16988 ? S 10:41 0:00 /usr/sbin/apache2 -k start
www-data 8517 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start
www-data 8518 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start
www-data 8519 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start
www-data 8520 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start
www-data 8521 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start
root 8523 0.0 0.0 21292 1088 pts/1 S+ 10:41 0:00 grep --color=auto apache
答案1
www-data
必须具有对整个树的写访问权限。
您可以执行chown -R www-data:yourgroup /var/www/html/pluto-php
,其中yourgroup
是您的用户的组名(root
出于安全原因请避免)。如果您不指定您的组名,您将无法在数据目录中写入和读取。
接下来通过执行添加正确的权限chmod -R 775 /var/www/html/pluto-php
。
答案2
权限被拒绝总是操作系统级别的问题。首先确保您认为进程正在运行的用户确实是相关用户。您似乎已经做到了这一点,但还要验证您没有运行 suexec、mpm_itk 或 mod_ruid 之类的程序,这些程序可以更改单个请求运行的 UID。
接下来,检查您尝试写入的路径是否可供用户遍历(在本例中为 www-data)。该namei
命令可以在这里提供帮助:
namei -mo /var/www/html/pluto-php/public/
接下来验证某些操作系统级别的安全软件(例如 SELinux 或 Apparmor)是否正在运行,如果正在运行,确定它是否会干扰您向该目录写入的进程。
最后,永远不需要 0777 的目录权限。1777 可能,但如果您需要将权限设置为 0777 才能使其工作,则说明其他地方出了问题。