Yii2项目Windows运行正常,Linux下报InvalidConfigException异常求助
解决Yii2部署Linux后Web进程无法写入assets目录的问题
你碰到的这个yii\base\InvalidConfigException完全是Linux文件权限搞的鬼!Windows下文件权限管得松,Yii2的AssetManager随便就能写assets目录,但Linux对权限卡得严,Web服务的运行用户(一般是www-data、apache或者nginx)根本没权限碰/var/www/html/hrms/web/assets这个目录,自然就报错了。
下面给你一步步解决的办法:
快速修复(测试环境可用)
- 先把assets目录的所有者改成Web服务用户,假设你用的是
www-data,执行这条命令:sudo chown -R www-data:www-data /var/www/html/hrms/web/assets - 再给目录设置合适的读写权限:
如果还是不行,临时用777权限测试(注意:生产环境别长期用777,不安全):sudo chmod -R 755 /var/www/html/hrms/web/assetssudo chmod -R 777 /var/www/html/hrms/web/assets
生产环境安全配置方案
直接开777太危险,咱们换更稳妥的方式:
- 把Web用户加到你代码所在的用户组里(比如你部署代码用的用户是
ubuntu,组也是ubuntu):sudo usermod -aG ubuntu www-data - 给assets目录设置组可读写的权限:
这样Web进程能正常读写,又不会把权限开放给所有用户,兼顾安全和功能。sudo chmod -R 775 /var/www/html/hrms/web/assets
补充说明
Yii2的assets目录是用来存放编译合并后的静态资源(比如压缩后的CSS、JS)的,每次页面加载时AssetManager可能需要生成新的资源文件,所以必须保证Web进程有读写这个目录的权限——这也是跨平台部署时最容易踩的坑之一。
内容的提问来源于stack exchange,提问作者Arun Srt
相关产品推荐
相关产品推荐

