CentOS 7 上 Laravel 的存储目录的权限问题。使用 chmod 和 chown 更改权限和所有权并不能解决问题

Permission problems with Laravel's storage directory on CentOS 7. Changing permissions and ownship with chmod and chown does not solve it

我在修改我的问题时自己想出了这个问题,但无论如何我都会 post 我的原始问题和解决方案,以防它帮助其他人。

该解决方案与符号 links 或 Deployer 无关,但我将按原样留下我的问题,以防有人以类似的方式遇到同样的问题。


我正在尝试在 CentOS 7 服务器上使用 Deployer 设置 Laravel 5.8 部署。

部署成功。 storage 文件夹在我的 deploy.php 文件中设置为共享目录,因此它将 storage 文件夹设置为版本之间的永久共享文件夹。它通过为发布的共享 storage 文件夹创建符号 link 来实现。

/var/www/test-laravel/current 有一个当前版本的文件夹,它实际上是最新版本文件夹的符号 link(在本例中为 /var/www/test-laravel/releases/18)。在该文件夹中,storage 文件夹实际上是一个符号 link 到 /var/www/test-laravel/shared/storage

我收到以下错误,

尝试了 permissions/owners/groups 的几种变体后,出于沮丧,我手动 运行 chmod -R 777chown -R apache.apache 不仅在原始存储文件夹上,而且在所有symlink 个文件夹。

这根本没有改变任何东西。我仍然遇到同样的错误。

我认为这不会有什么不同,但为了更好的衡量,我已经 运行 php artisan cache:clearphp artisan view:clearphp artisan config:clear.

原来是 SELinux 的问题。

我禁用了 SELinux,(setenforce 0) 然后它工作得很好。但是,我知道禁用 SELinux 并不可取,所以我重新启用了 SELinux (setenforce 1),相反,我尝试像这样更改存储文件夹上的标签,

chcon -R -t httpd_sys_rw_content_t storage

成功了!不再有权限问题。