问题: 部署博客,服务器经常500
排查:查看laravel日志: file_put_contents ()
,failed to open stream: No such file or directory;
出现几率为偶尔性
,不常出现;
结合百度搜索,猜测可能出现的原因:
777
权限,还是会报错】按照上述步骤解决后,还是会偶尔性
出现;
于是便查看storage/logs
文件,看到log文件属于 root 权限;
为什么是log会是 root 创建的,而不是 www 创建的???
明明用chmod给过权限,为什么是log会是 root 创建的?
发现问题根源 经过筛查,原来
ll
命令查看当前目录下文件的权限)排查是什么文件引起的,可以在项目目录中查看当前目录下文件的权限(重点看storage文件夹下的相关文件)
#当前目录下文件的权限
ll
查找出为什么文件会是 root 创建的原因(我这里是因为 crontab 的命令的问题)
让日志文件,在定时任务中不要以 root 的形式执行
crontab -u www -e ;
执行完命令后执行,把所有者改为 www
chown -R www:www * .*
如果你的项目是刚刚部署,出现这个状态且都不是上面的问题;
那么你可以打开项目下 storage/framework/cache/data
文件夹看是否权限为 664 ;
如果是 644 则直接修改 config/cache.php
...
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
'permission' => 0664,
],
// 将 0664 改为 0775
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
'permission' => 0775,
],
...
最后一定记得运行命令
php artisan config:cache
php artisan cache:clear
Laravel
在使用 Cache
时使用了 file
类型,然后 file
使用的是 0664 导致 www
用户无法执行 Cache
下的文件。
当然你可以可以将 Cache
类型换成:Redis
、Memcached