Yii2 - 网络进程无法写入目录 | frontend/web/assets

19

我在互联网上搜寻了这个问题,但是没有任何一个对我有帮助。这一个也不行:

chgrp apache /path/to/mydir
chmod g+w /path/to/mydir

我的服务器是CentOS 7。你能帮我吗?


Apache服务器通常以用户组www-data:www-data的身份运行。 - Joe Miller
6个回答

46

请尝试以下命令:

  1. 这会给出 apache 用户的名称。
    ps -ef | grep apache | grep -v grep

    在大多数情况下,用户将是 www-data。

  2. 进入 /frontend/web 文件夹后运行以下命令:
    sudo chgrp www-data ./assets

    sudo chmod g+w ./assets/

您的问题将得到解决。


@sam:我已在Amazon EC2中安装了nginx,但仍然出现“异常(无效配置)'yii\base\ InvalidConfigException',消息为'该目录不可被Web进程写入'”。 - Maulik patel
@Maulikpatel,你尝试过以nginx用户组身份执行上述命令吗? - Sam
这在我的CentOS7上不起作用,有其他的解决方案吗? - vivek dhamecha
在macOS上,它显示chgrp: www-data: 非法的组名 - Muhammad Omer Aslam
这在Ubuntu上即使作为su也无法工作。 - Irvan Hilmi

16

我也遇到了这个问题(在CentOS7上)。我尝试更改所有者和组,但没有起作用。最后,我关闭了selinux,它就正常工作了。

setenforce 0

如果你想永久关闭它,可以更改/etc/selinux/config文件:

SELINUX=disabled

对我有用。目录权限已设置为777,但错误仍然存在。禁用SELinux后开始工作。 - Saidolim
很棒,@lizs这个答案应该被采纳。 - Santi
首先更改配置文件没有起作用,当我设置setenforce 0时才起作用,感谢@lizs。 - morteza khadem

6
我在Ubuntu实例中遇到了同样的问题,我按照以下步骤解决了该问题。
sudo chmod 777 /home/nicjccom/public_html/asset

还做了这个

sudo chgrp root /home/nicjccom/public_html/asset

谢谢@Adil,但问题出在CENTOS 7上。我已经通过Sam的答案解决了它。 - Shaig Khaligli
@Adiii,我已经在Amazon EC2上安装了nginx,但仍然出现“异常(无效配置)'yii\base\InvalidConfigException',并显示消息'The directory is not writable by the Web process'”。 - Maulik patel
这对我在Docker和Ubuntu 21.04上运行成功。 - ThaJay

1
你可以尝试这个:

chcon -R -t httpd_sys_content_rw_t 'YOUR_PATH_HERE'

0
如果您正在使用php-fpm v7.4,并且所有用户/组都正确,您可以使用以下命令:
systemctl edit php-fpm
[Service]
ReadWritePaths = /usr/share/webapps/yii2-basic/web/assets

在上面的配置中添加,然后

systemctl restart php-fpm


0

尝试以下命令

我正在授予html文件夹在www中的权限。我的html文件夹包含多个项目。

chgrp -R user html/
chmod -R g+w html/
chmod -R g+w html/

你正在执行哪些命令?请在命令前加上sudo前缀来执行。 - Amol
我认为您需要授予资产文件夹权限。 - Amol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接