Я получаю следующие три строки в сообщении об ошибке в / var / mail / username после выполнения следующего задания в crontab ...
15 * * * * /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
Ошибки:
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 1: ?php: No such file or directory
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: syntax error near unexpected token `'initialize.php''
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: `require_once('initialize.php');
Скрипт PHP, который я пытаюсь выполнить, действительно существует, и я несколько раз удостоверился в правильности написания. Раньше я запускал crontab на другом скрипте, и он работал нормально ... любые идеи ??
Вторая и третья ошибки взяты из строки 3 следующего скрипта (того, который я пытаюсь запустить с помощью crontab):
<?php
require_once('initialize.php');
require_once('insertPropertyTypes.php');
$sDate;
if(isset($_GET['startDate'])) {
$sDate = $_GET['startDate'];
} else {
$sDate = '';
}
$insertResi = new InsertPropertyTypes('Listing', $sDate, 'RESI');
?>
Когда я запускаю свой сценарий insertPropertyRESI.php в браузере работает нормально ???? Кроме того, initialize.php и insertPropertyTypes.php находятся в том же каталоге, что и insertPropertyRESI.php.
Я использую MAMP с PHP 5.3.5
Thakns за помощь:?
Вы пытаетесь выполнить скрипт, у которого нет действительного Shebang.
Добавьте shebang в качестве первой строки скрипта следующим образом (конечно, отрегулируйте путь):
#!/usr/bin/php
Или измените запись crontab на:
15 * * * * /usr/bin/php /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
Причина, по которой он запускается в вашем браузере, заключается в том, что ваш сервер настроен на автоматическую компиляцию и обслуживание файлов PHP.
Cron, с другой стороны, не имеет такой роскоши; по умолчанию он будет запускать все, что вы поместите в него как bash
сценарий.
Судя по вашему Cronjob, вы запускаете файл PHP без использования php
парсер, и поэтому Cron пытается запустить скрипт как bash
сценарий.
Если вы положите php -f
перед расположением PHP-скрипта вы говорите Cron, что нужно запустить команду, используя php
частей, вы должны обнаружить, что теперь он будет работать.
В качестве альтернативы вы можете отредактировать свой код и добавить #!/usr/bin/php
к началу сценария. Когда Cron запускает этот файл, он будет использовать php
для запуска команды вместо bash
.
Запуск php-файла в командной строке отличается от запуска его на веб-сервере, таком как apache. Чтобы запустить php-скрипт в командной строке, вам необходимо: