php-скрипт как cron с использованием plesk 10.3.1

Я запускал простой php-скрипт (который регистрирует время работы в текстовом файле журнала). Из браузера он работает нормально, но я использую запланированные задачи на панели plesk 10.3.1 следующим образом:

*/5 *   *   *   *   php /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.php

Он запускается сразу через пять минут, но ничего не записывает в текстовый файл и отправляет мне следующие уведомления по электронной почте:

php [-f from_encoding] [-t to_encoding] [-s string] [files...]
php -l
php -r encoding_alias
 -l,--list
    lists all available encodings
 -r,--resolve encoding_alias
   resolve encoding to its (Encode) canonical name
 -f,--from from_encoding
    when omitted, the current locale will be used
 -t,--to to_encoding
    when omitted, the current locale will be used
 -s,--string string
    "string" will be the input instead of STDIN or files
The following are mainly of interest to Encode hackers:
 -D,--debug          show debug information
 -C N | -c | -p      check the validity of the input
 -S,--scheme scheme  use the scheme for conversion

Что я должен добавить в следующей строке?

php /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.php

person ahmed    schedule 13.03.2012    source источник


Ответы (3)


Текст, который вы возвращаете, является сообщением об использовании piconv. Это не имеет абсолютно никакого отношения к PHP, языку сценариев. То, что вы, вероятно, хотите сделать, является одним из следующих:

Альтернатива 1: Использование интерпретатора командной строки PHP

Вам нужно вызвать настоящий интерпретатор php в вашей системе. Это может быть /usr/bin/php5, поэтому ваша строка crontab будет выглядеть так:

*/5 *   *   *   *   /usr/bin/php5 /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.php

Однако не в каждой установке установлен этот интерпретатор командной строки. Может случиться так, что установлен только модуль apache.

Альтернатива 2: Использование запроса HTTP(S)

Если у вас нет прав на установку инструмента командной строки, проверьте, установлены ли wget или curl. Если это так, вы можете использовать их для вызова сценария, отправив запрос на веб-сервер.

Использование wget:

/usr/bin/wget -O /dev/null 'http://eblogs.co.uk/crone_test.php'

-O /dev/null говорит ему сохранить веб-страницу, сгенерированную вашим скриптом, в /dev/null. Это специальный файл, который сразу же забывает все записанные в него данные. Таким образом, этот параметр позволяет избежать создания любого нового файла с содержимым веб-страницы, который хранится в файловой системе вашего сервера.

Использование завитка:

/usr/bin/curl -o /dev/null 'http://eblogs.co.uk/crone_test.php'

-o /dev/null имеет здесь ту же функцию, что и версия с заглавной O выше для wget.

person zpea    schedule 09.04.2012
comment
Да, и кстати: скрипт на вашем сервере называется «crone_test.php» с буквой «e»? Просто скопировал его в мой ответ как есть. Если это опечатка, я бы тоже исправил ее в своем ответе. - person zpea; 09.04.2012

Добавьте следующее в начало php-скрипта:

#!/usr/bin/php
<?php
  your code here
?>

(при условии, что php существует в /usr/bin)

Надеюсь, это поможет !

person spacebiker    schedule 13.03.2012
comment
Да, исходный код php находится в /usr/bin/php, я добавил строку #!/usr/bin/php в начало исходного файла, но это не помогло, по-прежнему получая то же уведомление или ошибку по электронной почте. Я думаю, нам придется добавить что-то между php и путем - person ahmed; 14.03.2012
comment
убедитесь, что файл помечен как исполняемый (chmod +x), поскольку вы добавили шебанг (#!/usr/bin/php), вы можете просто назвать его как /yourfile.php. Это должно сделать это - person spacebiker; 14.03.2012
comment
у /usr/bin/php уже было 755 разрешений - person ahmed; 15.03.2012
comment
нет, я имел в виду не /usr/bin/php, а ваш файл crone_test.php - person spacebiker; 15.03.2012
comment
так что вы пытались запустить из plesk, не вызывая php в команде? - person spacebiker; 15.03.2012
comment
точно так же, как вы бы запускали любое другое приложение: /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.php , потому что вы сделали его исполняемым (chmod +x) и вы уже добавили шебанг, который будет работать, как если бы вы вызывали его php filename.php - person spacebiker; 15.03.2012
comment
Я попробовал это как php /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.php, но ничего хорошего не сделал, по-прежнему получая те же уведомления. - person ahmed; 19.03.2012
comment
нет, вы должны называть это так /var/www/vhosts/eblogs.co.uk/httpdocs/frostbox/cron/crone_test.phpи, как я ранее указывал, crone_test_php должен иметь разрешения на выполнение, это очень важно - person spacebiker; 19.03.2012

Вы можете использовать "завиток"... вот так:

curl "http://eblogs.co.uk/crone_test.php"
person Bassam    schedule 09.04.2012