1

我需要在 Pimcore 中添加批量对象创建。首先我尝试使用网络,但由于集合的大小,请求花费了很长时间并且在实际中丢弃了方法。

然后我选择了 cron 来安排以后的工作,但是我遇到了其他问题。与其他一些 RAD 应用程序一样,pimcore 会在 /website/var/versions 等文件夹中自动生成一些代码。所以这些文件夹会自动获得网络用户的权限(在我的例子中是 apache 用户)。

但是我的 cron 脚本由普通用户运行,该脚本执行 Pimcore API 调用以创建对象/数据,但由于权限不足而无法写入文件夹。现在我可以有两种选择之一。

  1. 通过 apache 用户运行 cron,出于安全原因,这是非常不可行的。
  2. 授予可写权限( chmod 777 喜欢或使用 chown 将我的用户添加到 apache 组)。但是 pimcore 在从浏览器管理时会不时创建新文件夹。所以这些新文件夹没有通过 cron 脚本写入的权限(权限最大 755,我得到的新文件夹不足以进行组写入)。

我之前在谷歌上搜索过,发现命令 setfacl 用于设置文件夹的默认用户/权限。我是这样使用的。

    `sudo setfacl -Rm u:apache:rwx,d:u:apache:rwx website/var/versions/object` 

但它经常失败,我需要一次又一次地手动授予权限。

现在是否有任何实用的方法来解决这个问题?

注意:我目前正在使用 Amazon Linux AMI。但是以后可以换成redhat或者ubuntu,所以最好有通用的linux解决方案。

4

1 回答 1

2

Pimcore 已经要求其维护作业 (cron) 在 apache 用户下运行,因此不在 apache 用户下运行您的作业可能不会有太大改善。

但是您可能希望采用用于集成通讯发送的方法。

请参阅/pimcore/modules/reports/controllers/NewsletterController.php:194

$cmd = Tool\Console::getPhpCli() . " " . realpath(PIMCORE_PATH . DIRECTORY_SEPARATOR . "cli" . DIRECTORY_SEPARATOR . "send-newsletter.php"). " " . escapeshellarg($letter->getName()) . " " . escapeshellarg(Tool::getHostUrl());
            Tool\Console::execInBackground($cmd, PIMCORE_LOG_DIRECTORY . "/newsletter--" . $letter->getName() . ".log");

上面的代码运行 CLI 脚本/pimcore/cli/send-newsletter.php

使用这种方法不需要 cron,并且由于作业作为 CLI 运行,它不会超时(如果您没有明确设置 PHP CLI 的超时)。

于 2015-11-02T09:16:25.907 回答