无法以追加模式打开流或文件:无法打开流:权限被拒绝
The stream or file could not be opened in append mode: failed to open stream: Permission denied
我正在使用 NGINX 和 PHP7.4-fpm
在 RHEL 7 机器中托管一个 Laravel 项目
在我的nginx.conf
中,我设置的用户如下
user nexta;
在我的 .../.../php-fpm.d/www.conf
user = nexta
group = nexta
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nexta
listen.group = nexta
listen.mode = 0660
使用此设置,我设法 运行 Laravel 应用程序,但是,我遇到了权限被拒绝的错误
它说:
The stream or file "/home/nexta/mywebsite.com/storage/logs/laravel-2021-07-25.log" could not be opened in append mode: failed to open stream: Permission denied
我试过以下方法
- 设置 chown 和 chmod
sudo chown -R nexta:nexta /home/nexta/mywebsite.com
sudo chown -R nexta:nexta /home/nexta/mywebsite.com/storage
sudo chown -R nexta:nexta /home/nexta/mywebsite.com/bootstrap/cache
sudo chmod -R 775 /home/nexta/mywebsite.com/storage
sudo chmod -R 775 /home/nexta/mywebsite.com/bootstrap/cache
- 尝试使用 777(我知道这不是一个好的做法)
sudo chmod -R 777 /home/nexta/mywebsite.com/storage
sudo chmod -R 777 /home/nexta/mywebsite.com/bootstrap/cache
将 nginx.conf 中的用户更改为 nginx,并将站点更改为 nginx。错误仍然存在,而且我无法查看我的应用程序
运行 如下:
php artisan cache:clear
composer dumpautoload
我还注意到,如果我 运行 php artisan cahce:clear
(注意拼写错误),这会触发错误并且应用程序能够访问日志文件,但是当应用程序通过以下方式访问时http请求,应用无法访问日志文件。
我也尝试在 php 请求中回显 whoami
(使用非 laravel 应用程序),我得到以下响应
Returned with status 0 and output: Array ( [0] => nexta )
也就是说,当应用程序通过http请求执行时,用户是nexta。
在这一点上,我什至不确定是什么导致了错误。
无论出于何种原因,您都应该锁定该文件。
您可以通过以下任一方式解决 he pb:
rm <log file>
或者如果您想保留它
mv <log file> <log_file>-old
无论出于何种原因,以下命令解决了我的问题
chcon -R -t httpd_sys_rw_content_t storage
chcon -R -t httpd_sys_rw_content_t bootstrap/cache
我正在使用 NGINX 和 PHP7.4-fpm
在 RHEL 7 机器中托管一个 Laravel 项目在我的nginx.conf
中,我设置的用户如下
user nexta;
在我的 .../.../php-fpm.d/www.conf
user = nexta
group = nexta
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nexta
listen.group = nexta
listen.mode = 0660
使用此设置,我设法 运行 Laravel 应用程序,但是,我遇到了权限被拒绝的错误
它说:
The stream or file "/home/nexta/mywebsite.com/storage/logs/laravel-2021-07-25.log" could not be opened in append mode: failed to open stream: Permission denied
我试过以下方法
- 设置 chown 和 chmod
sudo chown -R nexta:nexta /home/nexta/mywebsite.com
sudo chown -R nexta:nexta /home/nexta/mywebsite.com/storage
sudo chown -R nexta:nexta /home/nexta/mywebsite.com/bootstrap/cache
sudo chmod -R 775 /home/nexta/mywebsite.com/storage
sudo chmod -R 775 /home/nexta/mywebsite.com/bootstrap/cache
- 尝试使用 777(我知道这不是一个好的做法)
sudo chmod -R 777 /home/nexta/mywebsite.com/storage
sudo chmod -R 777 /home/nexta/mywebsite.com/bootstrap/cache
将 nginx.conf 中的用户更改为 nginx,并将站点更改为 nginx。错误仍然存在,而且我无法查看我的应用程序
运行 如下:
php artisan cache:clear
composer dumpautoload
我还注意到,如果我 运行 php artisan cahce:clear
(注意拼写错误),这会触发错误并且应用程序能够访问日志文件,但是当应用程序通过以下方式访问时http请求,应用无法访问日志文件。
我也尝试在 php 请求中回显 whoami
(使用非 laravel 应用程序),我得到以下响应
Returned with status 0 and output: Array ( [0] => nexta )
也就是说,当应用程序通过http请求执行时,用户是nexta。
在这一点上,我什至不确定是什么导致了错误。
无论出于何种原因,您都应该锁定该文件。
您可以通过以下任一方式解决 he pb:
rm <log file>
或者如果您想保留它
mv <log file> <log_file>-old
无论出于何种原因,以下命令解决了我的问题
chcon -R -t httpd_sys_rw_content_t storage
chcon -R -t httpd_sys_rw_content_t bootstrap/cache