Назад | Перейти на главную страницу

Почему crontab выдает ошибку «Нет такого файла или каталога», когда файл ДЕЙСТВИТЕЛЬНО существует?

Я получаю следующие три строки в сообщении об ошибке в / 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-скрипт в командной строке, вам необходимо:

  1. Установите пакет php-cli, поскольку он может быть не установлен по умолчанию.
  2. Убедитесь, что у вас есть комментарий «! # / Usr / bin / php» в первой строке, и убедитесь, что вы установили разрешение «x» в своем php-скрипте.
  3. В качестве альтернативы 2 вы просто запускаете скрипт, вызывая его с помощью php your_script