Magento日志文件权限问题

时间:2016-04-25 06:41:08

标签: magento

我有一个标准的Magento应用程序,通过web(www-data)或cron脚本(由cron用户执行)执行操作。默认情况下,Magento使用chmod 0640创建日志文件,因此这给我们带来了一个问题。无论谁先记录异常/系统(www-data或cron),另一个都无法追加。因此,如果Web上发生异常,将使用www-data作为所有者创建var / log / exception.log,因此cron脚本将无法在同一文件中记录异常(cron和www-data不在同一组,但即使他们会这样,也没有帮助。)

可能的解决方案: 1.使用相同的www-data用户运行cron(sysadmin不会让步,不同意解决方案) 2.更改Mage.php以生成具有更合适的chmod的日志文件(甚至可能是777)。可行,但这意味着修改Magento核心文件(Mage.php)并且许可证并不允许这样做。

Mage类是最终的,我注意到在登录之后没有事件之前或之后的事件,以便可能在前/后挂钩中更改chmod。

是否有人遇到过同样的问题,或者对如何正确处理这个问题有任何建议?

2 个答案:

答案 0 :(得分:0)

您提出的第一个解决方案听起来对我来说是有效的。 cronjob应该与www-data用户一起运行。只有这样,您才能保证文件权限匹配,无论是Web服务器还是cron作业。

否则,您如何保证以不同的用户身份运行cronjob,Web服务器会给您相同的结果?

正如您已经说过的,修改Mage.php并不是一个正确的解决方案。永远不要直接修改核心文件,因为在更新Magento时会遇到问题 - e。 G。覆盖文件。

答案 1 :(得分:0)

从我的角度来看,Web用户不应该像shell / cronjob用户那样是同一个用户。他们可以使用相同的组,但不同的用户更安全。

在我们的案例中,web / http-user是:

  • 的httpd:现场

和shell / cron用户是:

  • PROD:现场

因此用户不同,但属于同一组。对于我们的案例,日志权限640限制性太强。

在Mage.php中完成

chmod($logFile, 0640);

我们通过脚本从0640到0660通过简单的脚本

更改它们
$command = 'find '.realpath(dirname(__FILE__)).'/var/log/ -type f -exec chmod 0660 {} +';
exec ($command);

由cron shell和wget

执行