我正在尝试使用Nginx web服务器在数字海洋水滴(CentOS 7)上部署yii-2应用程序。我已将www文件夹范围设置为:
chmod -R 775 /var/www
并使用www/apache用户测试所有权。但创建缓存文件夹的权限仍被拒绝:
Exception – yii\base\Exception
Failed to create directory "/var/www/html/frontend/runtime/cache": mkdir(): Permission denied
Caused by: yii\base\ErrorException
mkdir(): Permission denied
in /var/www/html/vendor/yiisoft/yii2/helpers/BaseFileHelper.php at line 628
请指点一下,我是不是做错了什么?
发布于 2019-11-20 18:13:17
您需要让selinux知道您将允许http进程写入哪些目录。可以将其视为另一组权限。
使用chcon设置或更改这些权限
下面是一个典型的yii应用需要写入的目录的快速列表
chcon -Rt httpd_sys_content_rw_t /var/www/*/frontend/runtime
chcon -Rt httpd_sys_content_rw_t /var/www/*/backend/runtime
chcon -Rt httpd_sys_content_rw_t /var/www/*/console/runtime
chcon -Rt httpd_sys_content_rw_t /var/www/*/frontend/web/assets
chcon -Rt httpd_sys_content_rw_t /var/www/*/backend/web/assets
请注意,上述路径中的通配符(*
)适用于www中的所有目录
需要写入访问权限(文件/图像上传文件夹)的项目特定路径需要单独应用
chcon -R -t httpd_sys_content_rw_t /var/www/some-project/uploads/*
您还可以阅读有关contexts here的更多信息
如果是新的设置,您可能需要设置以下flags才能正常工作
setsebool -P allow_httpd_anon_write 1
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1
如果所有这些都不是您喜欢的,那么您可以启用允许模式
setenforce 0
https://stackoverflow.com/questions/58936518
复制相似问题