laravel项目的日志文件迁移
一个使用laravel的项目,因为使用量较大,服务器上的日志文件很大,且很占内存,所以决定将日志文件的存储位置迁移到其他的文件夹。
首先我看了laravel的文档后,去查看了config文件夹里的logging.php文件。
如图所示,我在上方的渠道里看到渠道只有daily这个,于是我就修改了daily的path选项,改成了我自定义的一个路径测试了下,发现日志确实存储到新的目录下了。但还发现了个新问题,就是新目录下只存储了项目的错误日志,而没有真正大量占内存的数据库的查询日志,为此我又去查询了下资料,发现logging这边的配置只处理错误日志,而没有mysql的查询日志。
mysql的查询日志的位置在app/providers文件夹下的AppServiceProviders.php中,在此处监听数据库并添加数据库的查询日志。我把此处的日志存放路径修改后,数据库查询日志也迁移到了新的目录下。
但是,在修改提交到服务器上后,报了这个错误:
这种情况是open_basedir限制了PHP可以操作的文件目录,可以在配置文件中修改open_basedir信息,加上想要操作的路径或者直接注释掉这行。
查了下资料,说是open_basedir可以在 php.ini 里配置;也可以在 Apache 配置的 VirtualHost 或者 Direcotry 里设置;或者修改Nginx的配置文件 fastcgi.conf里的PHP_ADMIN_VALUE open_basedir;
修改完后重启Apache或者Nginx就可以生效。
但是我看了下服务器上用的是nginx,但配置文件里没找到open_basedir信息,于是我又去查了下,发现是因为宝塔面板的原因,修改open_basedir是要下项目目录下的.user.ini的隐藏文件中修改,(或者也可以去掉网站目录下的勾选,防跨站攻击(open_basedir),然后重启php服务,但个人感觉不推荐)
在user.ini文件的open_basedir信息后面追加 “:/XXXXX/” ,xxxx是操作路径
然后发现报了另一个错误,这个报错就很明显了,大概率是日志存储路径文件夹权限的问题,我去修改了下文件夹的权限,发现日志迁移成功了。