Выполнение php с помощью crontab
Я пытаюсь запустить php- script по расписанию. Поэтому я подумал, что кнтаб был хорошей идеей. Сервер, который я использую, находится в Linux, с которым я не знаком. Таким образом, проблема, с которой я столкнулась, - это я не знаю, как сделать исполняемый файл script с php. Мне нужно ссылаться на script или помещать его в папку, которая может запускать php из командной строки. Поэтому я не знаю, какой путь дать свой кронтаб, например:
5 * * * * var/www/some/path/script.php
Я нашел некоторую неопределенную информацию об этом исполняемом файле php, найденном в
/usr/bin/php
Но я не могу найти там php файл, возможно, у меня его нет? Моя установка php5 и apache находится в:
/etc/php5
Итак, мой вопрос становится, есть ли все-таки выполнить php- script с crontab в любой другой папке, или мне просто не хватает исполняемого файла php в usr/bin/php?
Ответы
Ответ 1
Начните с ввода в командной строке:
whereis php
Сделайте это как пользователь, чтобы выполнялось задание cron. Это покажет вам путь к исполняемому файлу. Затем вы можете использовать этот путь (если он еще не находится в переменной PATH) в записи cron:
5 * * * * /your/path/to/php /var/www/some/path/script.php
Изменить: вам может потребоваться установить пакет php5-cli
(Ubuntu package name), если у вас есть установленный PHP-модуль Apache. Это даст вам двоичный исполняемый файл, который вы можете запустить из командной строки.
Ответ 2
Является ли это системой Linux?
В новых дистрибутивах Linux есть
на самом деле удобная система настройки crontab
что не требует ввода в crontab
пользователем.
Например, в SuSE Linux у вас есть каталоги
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/
Просто поместите вызов script (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
Привет
БВУ
Ответ 3
Мне нужно было найти следы, чтобы найти исполняемый файл:
[email protected]:~$ type php
php is /usr/bin/php
[email protected]:~$ file /usr/bin/php
/usr/bin/php: symbolic link to `/etc/alternatives/php'
[email protected]:~$ file /etc/alternatives/php
/etc/alternatives/php: symbolic link to `/usr/bin/php5'
[email protected]:~$ 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/php 5 в качестве пути к исполняемому файлу php следующим образом:
[email protected]:~$crontab -e
#*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php
Ответ 4
Вы также можете использовать 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
Я предлагаю вам сделать это,
*/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 на внешний сайт не локально, и он работает.
попробуйте и вернитесь.
Ответ 6
Вы можете использовать команду wget локально:
5 * * * * wget http://localhost/some/path/script.php