Laravel: 无法打开流权限被拒绝

Laravel: failed to open stream permission denied

尝试寻找可靠的答案,但还没有。我目前的设置如下:

当 storage/ 和 bootstrap/ 的所有权设置为 www-data:www-data (chown) 时,应用程序运行良好。我遇到的唯一问题是当我尝试 运行 composer 或 artisan 命令时它会给我一个错误:

Generating optimized autoload files Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover --ansi UnexpectedValueException The stream or file "/home/amplr/portal.amplr.be/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied

当我将所有权设置回 ubuntu 用户时,作曲家和 artisan 工作,但应用程序抛出权限错误。完成作曲家命令后,我必须回到 www-data:www-data。

我做错了什么?

我会用

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

连同

chmod -R 775 storage
chmod -R 775 bootstrap/cache

因此,您的 linux 用户获得了 read/write/execute,并且通过 www-data 组获得了 apache。

这可能已经在 post 中得到了回答。

Laravel daily log created with wrong permissions

本质上,这里有两个不同的用户在工作:

  1. 您的 PHP FPM 用户将是 www-data:www-data。该用户将有权写入日志文件,这就是为什么这目前对您有用。

  2. 您 PHP CLI 用户将是您登录的任何用户。该用户听起来没有写入日志文件的权限。

有很多解决方案,从开放所有权限(坏主意)到为 FPM 和 CLI 用户创建新的日志文件。