You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora26下YII2虚拟主机部署报错:目录不可被Web进程写入

解决Yii2虚拟主机访问时Assets目录不可写的问题

这个问题的核心原因很明确:两种服务启动方式使用的系统用户权限不同。

  • 当你用yii php serve启动内置服务器时,它是用你当前登录的终端用户身份运行的,这个用户对/var/www/html/RLF_CMS/web/assets目录有写入权限,所以localhost:8080能正常访问。
  • 而Apache/httpd服务是以专门的系统用户(比如apache、www-data,取决于你的操作系统)运行的,这个用户没有权限写入assets目录,就会抛出InvalidConfigException错误。

下面是具体的解决步骤:

1. 确认Apache运行的用户

先搞清楚你的Apache服务用的是哪个用户,执行以下命令:

ps aux | grep httpd

在输出里找到httpd进程对应的用户列(通常是apache或者www-data),记下来。

2. 调整Assets目录的权限

根据你找到的Apache用户,选择下面一种方法修改权限:

方法一:修改目录所有者(推荐,安全性更高)

将assets目录的所有者和组改为Apache用户:

# 如果你用的是CentOS/RHEL系统,用户是apache
sudo chown -R apache:apache /var/www/html/RLF_CMS/web/assets

# 如果是Ubuntu/Debian系统,用户是www-data
sudo chown -R www-data:www-data /var/www/html/RLF_CMS/web/assets

方法二:调整目录权限(适合开发环境)

如果不想修改所有者,可以给目录添加写入权限:

# 给所有用户添加写入权限(开发环境可用,生产环境不推荐)
sudo chmod -R 777 /var/www/html/RLF_CMS/web/assets

# 更安全的方式:给组用户添加写入权限,同时将组设为Apache用户组
sudo chmod -R 775 /var/www/html/RLF_CMS/web/assets
sudo chgrp -R apache /var/www/html/RLF_CMS/web/assets # 对应CentOS/RHEL
# 或者 sudo chgrp -R www-data /var/www/html/RLF_CMS/web/assets # 对应Ubuntu/Debian

3. 验证AssetManager配置(可选)

虽然localhost能正常运行说明配置大概率没问题,但可以检查下Yii2的web配置文件(/var/www/html/RLF_CMS/web/config.php)里的AssetManager配置是否正确:

'components' => [
    'assetManager' => [
        'basePath' => '@webroot/assets',
        'baseUrl' => '@web/assets',
    ],
    // ...其他组件配置
],

4. 重启Apache服务

最后重启Apache让权限变更生效:

# CentOS/RHEL系统
sudo systemctl restart httpd

# Ubuntu/Debian系统
sudo systemctl restart apache2

做完这些步骤后,再访问www.my.site.lk应该就能正常运行了。

内容的提问来源于stack exchange,提问作者Madushanka Sampath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:51:10