Я пытаюсь запустить 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