【问题标题】:Failed to create directory "/var/www/html/frontend/runtime/cache": mkdir(): Permission denied未能创建目录“/var/www/html/frontend/runtime/cache”:mkdir():权限被拒绝
【发布时间】:2019-11-19 14:40:13
【问题描述】:

我正在尝试使用 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

请指导我,我做错了吗?

【问题讨论】:

  • CentOS默认开启了selinux,你可以通过getenforce查看吗?
  • 我运行了这个命令。得到“执行”。我该怎么办?

标签: php yii2


【解决方案1】:

我认为你应该给:sudo chmod -R 777 /var/www/html/frontend/runtime

【讨论】:

  • 为我工作。谢谢
【解决方案2】:

您需要让 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/*

您还可以阅读有关上下文的更多信息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

【讨论】:

  • 我做了所有这些更改,但仍然遇到同样的错误。
  • 你能分享ls -lZ /var/ww/frontend的输出吗
猜你喜欢
  • 2014-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2021-11-01
  • 2021-08-10
  • 2017-10-26
  • 1970-01-01
  • 2021-07-15
相关资源
最近更新 更多