Задание Cron не будет обрабатывать require_once - PullRequest
1 голос
/ 29 апреля 2011

У меня есть настройка задания Cron для запуска каждые 5 минут.Задание Cron выглядит следующим образом:

php /var/www/vhosts/default/htdocs/Mail-test/index.php

В конце моего сценария index.php есть следующее:

$path = $base_path . trim($row['company']) . '/Users/' . trim($row['name']) . '/Upload/';
$zip_processing_file = $path . 'zip.php';

require_once "zip_processing_file";

Однако, когда задание Cron выполняется, я получаю сообщение об ошибкезаявляя, что следующий каталог, который = $zip_processing_file не существует в /var/www/vhosts/default/htdocs/Mail-test/

, я не могу решить эту проблему.Я попытался включить, но это дает ту же проблему.Единственный способ заставить это работать, это поставить

header("location: $zip_processing_file");

, а затем нажать Mail-test/index.php из веб-браузера, тогда он будет циклически проходить весь процесс, но я не могу сделать это через веб-браузерМне нужна работа Cron для работы.Спасибо!

Ответы [ 4 ]

1 голос
/ 29 апреля 2011

Сообщение об ошибке, в котором упоминается / var / www / vhosts / default / htdocs / Mail-test / , похоже, не относится к пути, хранящемуся в $zip_processing_file (который содержит Users и Upload) так что это может быть отдельной проблемой.

Однако проблема require_once может быть связана с тем, что ваш код не интерполирует переменную $zip_processing_file.

Изменение:

require_once "zip_processing_file";

Кому:

require_once $zip_processing_file;
0 голосов
/ 29 апреля 2011

Похоже, вы хотите

require_once "/Mail-test/" . $zip_processing_file;
0 голосов
/ 29 апреля 2011

Итак, следуя вашему коду, отсюда:

$path = $base_path . trim($row['company']) . '/Users/' . trim($row['name']) . '/Upload/';
$zip_processing_file = $path . 'zip.php';

Вы должны получить что-то вроде (в зависимости от содержимого $base_path:

/var/www/vhosts/default/htdocs/company/Users/name/Upload/zip.php

Вместо этого вы 'Появляется ошибка:

/var/www/vhosts/default/htdocs/Mail-test/

, что не имеет смысла в соответствии с вашим кодом.

Необходимо убедиться, что содержимое $ zip_processing_file содержит полный путь сервера к PHPфайл, который вам нужно загрузить.

Причина, по которой сработала функция header(), заключается в том, что она может принимать относительный путь к веб-корню. При использовании require() или любой другой файловой операции в PHP онадолжен получить относительный путь к документу или корневой каталог сервера.

0 голосов
/ 29 апреля 2011

Скорее всего, вы должны указать физический адрес php.

Как:

...