Подтвердить что ты не робот

Выполнение 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?

4b9b3361

Ответ 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