Заданию крона Magento PHP не удается открыть требуемые php файлы

Мы пытаемся настроить задание крона для сайта Magento.

Мы судили этого Job, но это не работало на нас:

*/5 * * * * php -f /var/www/html/sitename/cron.php

Для отладки мы судили этого Job:

*/5 * * * * /usr/bin/php  -q /var/www/html/sitename/cron.php > 
/var/www/html/sitename/cron-temp.log 2>&1

В результате мы нашли эти ошибки в cron-temp.log:

PHP Warning:  require(app/bootstrap.php): failed to open stream:
 No such file or directory in /var/www/html/sitename/cron.php on line 30

    PHP Fatal error:  require(): Failed opening required 'app/bootstrap.php' 
(include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/sitename
/cron.php on line 30

cron.php

<?php


// Change current directory to the directory of current script
chdir(dirname(__FILE__));

require 'app/bootstrap.php';
require 'app/Mage.php';

if (!Mage::isInstalled()) {
    echo "Application is not installed yet, please complete install wizard first.";
    exit;
}

// Only for urls
// Don't remove this
$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);

Mage::app('admin')->setUseSessionInUrl(false);

umask(0);

$disabledFuncs = explode(',', ini_get('disable_functions'));
$isShellDisabled = is_array($disabledFuncs) ? in_array('shell_exec', $disabledFuncs) : true;
$isShellDisabled = (stripos(PHP_OS, 'win') === false) ? $isShellDisabled : true;
$isShellDisabled = true;

try {
    if (stripos(PHP_OS, 'win') === false) {
        $options = getopt('m::');
        if (isset($options['m'])) {
            if ($options['m'] == 'always') {
                $cronMode = 'always';
            } elseif ($options['m'] == 'default') {
                $cronMode = 'default';
            } else {
                Mage::throwException('Unrecognized cron mode was defined');
            }
        } else if (!$isShellDisabled) {
            $fileName = basename(__FILE__);
            $baseDir = dirname(__FILE__);
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
            exit;
        }
    }

    Mage::getConfig()->init()->loadEventObservers('crontab');
    Mage::app()->addEventArea('crontab');
    if ($isShellDisabled) {
        Mage::dispatchEvent('always');
        Mage::dispatchEvent('default');
    } else {
        Mage::dispatchEvent($cronMode);
    }
} catch (Exception $e) {
    Mage::printException($e);
    exit(1);
}
1
задан 8 September 2016 в 10:43

3 ответа

PHP Fatal error:  require(): Failed opening required 'app/bootstrap.php' 
(include_path='.:/usr/share/php:/usr/share/pear')

Это похоже на Ваш required наклон файлов быть найденным и таким образом, это бросает ошибку. Я предполагаю, что эти файлы находятся в /var/www/html/sitename/app/? В этом случае добавьте следующую строку в начале Вашего cron.php:

set_include_path('/var/www/html/sitename/');

Вы, возможно, также должны изменить Ваш require операторы для включения наклонной черты вправо в начале адреса:

require '/app/bootstrap.php';
require '/app/Mage.php';
2
ответ дан 8 September 2016 в 20:43
  • 1
    That' s все из работы, но действительно выглядит хорошим. Хорошее задание! – Sergiy Kolodyazhnyy 25 October 2017 в 22:45

Это - действительно произвольное предположение, но включение могло бы перестать работать из-за полномочий каталога/файла.

Удостоверяются, что у пользователя, для которого Вы выполняете задание крона, есть все права получить доступ к каталогу, где cron.php файл и все файлы, которые это открывает.

Вы, возможно, настроили полномочия для веб-сервера, который работает под www-data, но Вы выполняете cronjob от f.e. magento пользователь.

Вы могли бы хотеть добавить больше информации в свой вопрос о среде (id -u) и полномочия (ls -l /var/www/html/sitename/*) для дальнейшей отладки проблемы.

1
ответ дан 8 September 2016 в 20:43
  • 1
    Какой процесс Вы используете для создания тех gifs @pa4080? – pbhj 10 November 2017 в 10:43

Поскольку другие упомянули, что Ваш демон крона работает правильно, но PHP имеет проблемы при нахождении необходимых файлов, которых cron.php требует для выполнения. PHP ищет, они во включать путях, указанных php.ini и дополнительно в документе, поддерживают апачский модуль таким образом, почему сам сайт работает для версии командной строки PHP, этот дополнительный путь является текущим рабочим каталогом.

Это должно работать, если Вы удостоверяетесь, что PHP выполняется от корня документа т.е. крона изменения для выполнения команды следующим образом:

*/5 * * * * cd /var/www/html/sitename && php -f /var/www/html/sitename/cron.php
0
ответ дан 8 September 2016 в 20:43
  • 1
    @pbhj, под Ubuntu I' m использование Быстрый взгляд это просто и хорошо, но иногда отказывает и doesn' t имеют способности к редактированию. Большинство моих GIFs создается в соответствии с Windows, где I' m запись окно соединения VNC. У меня есть отдельная настольная машина это главным образом I' m использующий для MS Office и создания GIF:) Инструмент это I' m использующий существует ScreenToGif. Это - открытый исходный код, бесплатный, и имеет мощного редактора и обрабатывающий mechanisum. К сожалению, я can' t находят инструмент как ScreenToGif для Ubuntu. – pa4080 10 November 2017 в 11:08

Другие вопросы по тегам:

Похожие вопросы: