Выполнение php с помощью crontab

Я пытаюсь запустить php-скрипт по расписанию. Поэтому я подумал, что кнтаб был хорошей идеей. Сервер, который я использую, находится в Linux, с которым я не знаком. Так что проблема, с которой я столкнулась, – это я не знаю, как сделать скрипт исполняемым с php. Мне нужно ссылаться на скрипт или помещать его в папку, которая может запускать php из командной строки. Поэтому я не знаю, какой путь дать свой кронтаб, например:

5 * * * * var/www/some/path/script.php 

Я нашел некоторую неопределенную информацию об этом исполняемом файле php, который был найден в

 /usr/bin/php 

Но я не могу найти там php-файл, возможно, у меня его нет? Моя установка php5 и apache находится в:

 /etc/php5 

Итак, мой вопрос становится, есть ли все-таки выполнить php-скрипт с crontab в любой другой папке, или мне просто не хватает исполняемого файла php в usr / bin / php?

Начните с ввода в командной строке:

whereis php

Сделайте это как пользователь, чтобы выполнялось задание cron. Это покажет вам путь к исполняемому файлу. Затем вы можете использовать этот путь (если он еще не находится в переменной PATH) в записи cron:

5 * * * * /your/path/to/php /var/www/some/path/script.php

Изменить: вам может потребоваться установить пакет php5-cli (Ubuntu), если у вас есть установленный модуль Apache PHP. Это даст вам двоичный исполняемый файл, который вы можете запустить из командной строки.

Является ли это системой Linux?

В новых дистрибутивах Linux существует
фактически удобная система crontab-setup
который не требует какой-либо записи в crontab пользователем. Например, в SuSE Linux у вас есть каталоги

 /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.monthly/ /etc/cron.weekly/ 

Просто поместите скрипт вызова (konno_php_start) в любой из этих каталогов, например

 /etc/cron.hourly/konno_php_start 

который является исполняемым (chmod 755 или около того) и содержит:

 #!/bin/sh cd /var/www/some/path/ php script.php >> logfile.txt 2>&1 

и перезапустите демон cron. Это оно.

Из файла журнала вы увидите, будет ли ваш php-интерпретатор
будут найдены в PATH. Если нет, измените строку в /etc/cron.hourly/konno_php_start на

 /full/path/to/php script.php >> logfile.txt 2>&1 

С уважением

БВ

Мне нужно было найти следы, чтобы найти исполняемый файл:

 andy@ararat:~$ type php php is /usr/bin/php andy@ararat:~$ file /usr/bin/php /usr/bin/php: symbolic link to `/etc/alternatives/php' andy@ararat:~$ file /etc/alternatives/php /etc/alternatives/php: symbolic link to `/usr/bin/php5' andy@ararat:~$ file /usr/bin/php5 /usr/bin/php5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped 

поэтому вам нужно включить / usr / bin / php5 в качестве пути к исполняемому файлу php, например:

 andy@ararat:~$crontab -e #*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php 

Вы также можете использовать env , он найдет и запустит php для вас:

 /usr/bin/env php /var/www/some/path/script.php 

Или вы можете поместить shebang в свой script.php (первая строка):

 #!/usr/bin/env php 

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

 5 * * * * /var/www/some/path/script.php 

Я предлагаю вам сделать это так,

 */5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null 

где у вас код .pl, вы должны grep использовать wget или что-то вроде этого:

 wget "/www/root/index.php" 

или вы можете просто так:

 /usr/bin/wget "/www/root/index.php" 

Это просто мое предложение, я только пытаюсь запустить wget на внешний сайт не локально, и он работает.

попробуйте и вернитесь.

Вы можете использовать команду wget локально:

 5 * * * * wget http://localhost/some/path/script.php