在我的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
权限被拒绝始终是操作系统级别的问题。首先确保您认为进程正在运行的用户确实是相关用户。您似乎已经这样做了,但还要验证您没有运行诸如 suexec、mpm_itk 或 mod_ruid 之类的东西,它们可以更改 UID 单个请求的运行方式。
接下来,检查您尝试写入的路径是否可由用户遍历(在本例中为 www-data)。该
namei
命令可以在这里提供帮助:namei -mo /var/www/html/pluto-php/public/
接下来验证是否某些操作系统级别的安全软件(例如 SELinux 或 Apparmor)正在运行,如果是,请确定它是否会干扰您写入该目录的进程。
最后,永远不需要 0777 的目录权限。可能是 1777,但是如果您需要将权限设置为 0777 才能使其工作,则有其他问题。
www-data
必须对整个树有写访问权。您可以执行
chown -R www-data:yourgroup /var/www/html/pluto-php
,yourgroup
用户的组名在哪里(root
出于安全原因避免使用)。如果您不指定您的组名,您将无法在数据目录中写入和读取。接下来通过执行添加正确的权限
chmod -R 775 /var/www/html/pluto-php
。