2014-10-10 3 views
0

Я пытаюсь запустить php-скрипт каждый день в 01:00 UTC. У меня есть строка
00 01 * * * /usr/bin/php -f /var/www/html/test.php
в моем crontab, но по какой-то причине он не запускает мой скрипт. Я знаю, что сам скрипт работает, потому что я его протестировал. Он просто не будет работать в кронтабе. Я также пробовал использоватьЗапуск php-скрипта в crontab

00 01 * * * php /var/www/html/test.php 

но это тоже не сработало. Я добавил #!/usr/bin/php к самому началу php-скрипта, который я пытаюсь запустить. Я также попробовал -q вместо -f. Ничего не сработало, и я не уверен, что могу сделать, чтобы исправить это. Есть ли другой метод, который я должен попробовать, если это все еще не работает?

+1

Какой владелец и группа делает test.php принадлежит? и попробовали ли вы запустить его из командной строки? –

+0

Также вы указываете правильный путь к PHP? – Venice

+0

Это файл, созданный пользователем root. Я также попытался изменить привилегии с помощью chmod + x test.php В командной строке я запустил команду «php /var/www/html/test.php», и скрипт сделал именно то, что я хотел. – fcr91

ответ

0

В результате я написал сценарий ksh, который экспортировал больше путей, а затем запустил скрипт php. Это сработало.

export ORACLE_HOME=/opt/oracle/product/11.2.0/client export LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/client/lib/ export PATH=$PATH:/opt/oracle/product/11.2.0/client/bin php /var/www/html/test.php

0

Убедитесь, что ваши пути верны. Попробуйте этот синтаксис:

cd /var/www/html; php -q -c ./ test.php 

Флаг -q подавляет любой заголовок() из записывается в стандартный вывод. Это заставляет ваш скрипт исполняться с двоичным кодом php-cgi вместо версии командной строки.

Флаг -c не позволяет ОС сменить каталоги, так как вы делаете это с помощью cd.

+0

вам/не нужно/нужно указать путь к PHP .. –

+0

is это для кронтаба? – fcr91

+0

yessir. @ fcr91 вы можете использовать точку с запятой для выполнения сразу двух команд. –

-1

Почему бы просто не сделать файл исполняемым (chmod 750 /var/www/html/test.php) и запустить его с помощью shebang?

#!/usr/bin/php 
<?php 
.... 
?> 

Тогда ваше задание cron должно ссылаться только на скрипт.

00 01 * * * /var/www/html/test.php 

Примечание. Я использовал 750 разрешений для файла, чтобы сделать его исполняемым для пользователя и группы. Если он управляется кем-то другим, он должен быть равен 755.

+0

-1 за отсутствие каких-либо объяснений для shebang. Флаг -q в моем ответе имеет тот же самый эффект без изменения какого-либо кода. –

+0

также, theres нет причины 755 работы cron. 750 более чем достаточно. –

+0

Права доступа зависят от того, кто запускает скрипт. Но это хороший момент, я это сделаю. – miken32

0

имеющий локальный ход веб-сервера, вы можете позвонить

http://localhost/test.php 

из вашего кронтаб

Смежные вопросы