2016-02-16 2 views
2

Я уже несколько часов стучаю головой об этом.php exec() не работает через задание cron

Я выполняю скрипт php через задание cron, все в скрипте работает, за исключением метода exec().

<?php 
    exec('gpio write 7 0'); 

    // Open the file to get existing content 
    $current = file_get_contents('log.txt'); 

    // Append a new person to the file 
    $current .= get_current_user().' - '.date('H').":".date('i')." - gpio write 7 0\n"; 

    // Write the contents back to the file 
    file_put_contents($log, $current); 
?> 

Если я выполнить сценарий PHP прямо из терминала он работает как с pi пользователя и с root пользователем.

Данные, которые записываются в файл log.txt при выполнении задания хрон выглядит хорошо для меня, Херес образец:

root - 00:16 - gpio write 7 0 
root - 00:17 - gpio write 7 0 
root - 00:18 - gpio write 7 0 
root - 00:19 - gpio write 7 0 

Я пытался дать файл PHP, который должен быть выполнен как 755 и 777 Разрешения без везения.

Это то, что у меня есть, когда я исполню sudo crontab -e

*/1 * * * * /usr/bin/php /var/www/check_time.php 

Любая помощь будет принята с благодарностью.

Заранее спасибо.

ответ

3

Вы должны быть конкретными с путем для gpio и дать точное местоположение так хроны знают, где его найти, /usr/local/bin не импортируются хронами:

/usr/local/bin/gpio 

Так будет тогда:

exec('/usr/local/bin/gpio write 7 0); 
0

на линии

exec('gpio write 7 0); 

она должна быть

exec('gpio write 7 0'); 

? Похоже, что «никогда не было закрыто.

+0

Нет, это была опечатка, когда я писал сообщение. Хороший улов. Я обновил сообщение соответственно. спасибо –

+0

какой компьютер/сервер ОС вы его запускаете? Кажется, что php не выполняет скрипт. На новых серверах ubuntu вы можете просто использовать 'php' вместо'/usr/bin/php' в скрипте cron. Некоторые из них получают придирчивый edit- я вижу, вы говорите, что используете его на ras-pi, попробуйте попробовать – brettywhite

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