【问题标题】:Magento log file permission issuesMagento 日志文件权限问题
【发布时间】:2016-04-25 06:41:07
【问题描述】:

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

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

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

有没有人遇到过同样的问题或对如何正确处理有任何建议?

【问题讨论】:

    标签: magento


    【解决方案1】:

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

    否则你怎么能保证以不同的用户和网络服务器运行 cronjob 会给你相同的结果?

    如您所说,修改 Mage.php 不是正确的解决方案。切勿直接修改核心文件,因为在更新 Magento 时会遇到问题 - e。 G。覆盖文件。

    【讨论】:

      【解决方案2】:

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

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

      • httpd:站点

      shell/cron 用户是:

      • 产品:网站

      所以用户不同,但属于同一个组。对于我们的案例,日志权限 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 执行

      【讨论】:

        猜你喜欢
        • 2019-12-06
        • 1970-01-01
        • 2020-02-15
        • 2013-04-12
        • 1970-01-01
        • 2018-02-03
        • 2018-07-30
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多