Проблема с разрешением на работу в Cron?


Crontab.xml :

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
    <group id="default">
        <job name="test_product_import" instance="Test\ImportExport\Cron\ProductImport" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

Php-файл, вызываемый cron:

<?php

namespace Test\ImportExport\Cron;

class ProductImport
{
    protected $trace;

    public function __construct(
        \Test\Core\Model\Trace $trace
    )
    {
        $this->trace = $trace;
    }

    public function execute()
    {
        $this->trace->writeTrace("Test");
    }
}

Сообщение об ошибке в таблице cron_schedule:

Предупреждение: открыть(app/code/Test/Trace.txt): не удалось открыть поток: Нет такого файла или каталога в /var/www/www.example.com/app/code/Test/Core/Model/Trace.php в строке 12

В строке 12 в этом файле:

$tracelog = fopen("app/code/Test/Trace.txt", "a") or die("Unable to open file!");

В SSH я выполнил

Php magento cron: выполнить

И я получил ошибка. Поскольку я предполагаю проблему с разрешением, я попытался

Sudo-u www-данные php magento cron: выполнить

Та же проблема. Что случилось?

Author: Jens, 2018-01-28

1 answers

Я смог решить эту проблему.

$tracelog = fopen("app/code/Test/Trace.txt", "a") or die("Unable to open file!");

Мне пришлось указать абсолютный путь к файлу вместо относительного, как показано выше.

 0
Author: Jens, 2018-01-28 18:43:54