We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
php скрипт в cron
php скрипт в cron
Доброго времени суток,
не срабатывает задание в кроне.
вызываю с кроне
Через консоль(putty) данная команда проходит на ура.
Сам скрипт:
Данный скрипт необходим, он будет брать инфу из БД и работать с ней, а по итогам работы будет совершать автоматически блокировку или разблокировку домена.
Посоветуйте пожалуйста, почему не срабатывает через крон данный скрипт?
Если написать скрипт типа:
все в порядке, создается файл с текстом. А вот exec() не срабатывает, почему?
не срабатывает задание в кроне.
вызываю с кроне
Code: Select all
sudo /usr/local/vesta/php/bin/php /home/admin/script.php
Сам скрипт:
Code: Select all
#!/usr/local/vesta/php/bin/php
<?php
function vesta_api_query($params) {
$answer = exec( 'sudo -u root -S ' . '/usr/local/vesta/bin/'.$params['cmd'].' '.$params['arg1'].' '.$params['arg2'].' true < secret.srt');
// Check result
return $answer;
}
function General(){
$params['cmd'] = 'v-unsuspend-web-domain';
$params['arg1'] = 'admin';
$params['arg2'] = 'test.domain.com';
vesta_api_query($params);
}
General();
?>
Посоветуйте пожалуйста, почему не срабатывает через крон данный скрипт?
Если написать скрипт типа:
Code: Select all
#!/usr/local/vesta/php/bin/php
<?php
file_put_contents('test.txt','Test message', FILE_APPEND);
?>
Re: php скрипт в cron
Под каким пользователем запускаете крон?
Re: php скрипт в cron
я через vestacp добавляю задание в крон, а она(панель) не под рутом? а в панели задаю задание под admin'ом
Re: php скрипт в cron
Веб-интерфейс работает под пользователем admin и только ему можно использовать sudo без пароля. Только вот без пароля, admin может запускать только скрипты из /usr/local/vesta/bin/. Задание "sudo /usr/local/vesta/php/bin/php /home/admin/script.php" не попадает под это условие.
Добавьте скрипту /home/admin/script.php флаг на исполнение
И запускайте его без sudo и без указания интерпритатора
Внутри скрипта у вас есть вызов sudo который сработает. Правда, я не до конца понимаю что там за перенаправление из файла secret.srt. Для тестов попробуйте начать с кода попроще
Добавьте скрипту /home/admin/script.php флаг на исполнение
Code: Select all
chmod +x /home/admin/script.php
Code: Select all
* * * * * /home/admin/script.php
Внутри скрипта у вас есть вызов sudo который сработает. Правда, я не до конца понимаю что там за перенаправление из файла secret.srt. Для тестов попробуйте начать с кода попроще
Code: Select all
#!/usr/local/vesta/php/bin/php
<?php
echo exec( 'sudo -u root -S ' . '/usr/local/vesta/bin/v-list-sys-config');
Re: php скрипт в cron
указание скрипта в задании без sudo и интерпритатора, не дает вообще ни какой реакции. Даже элементарный скрипт создания файла и записи в него не срабатывает.
У файла скрипта права на выполнение имеются.
Попытка выполнить его через bash приводит к следующему:
У файла скрипта права на выполнение имеются.
Попытка выполнить его через bash приводит к следующему:
Code: Select all
-bash: ./script.php: /usr/local/vesta/php/bin/php^M: bad interpreter: No such file or directory
Re: php скрипт в cron
Судя по выводу, дело в переводе картетки. Переформатируйте скрипт на сервере и попробуйте перезапустить.
Re: php скрипт в cron
Спасибо, скрипт выполняется из консоли, но из крона не выполняется. Текст лога пишется, значит сам файл читается и выполняется, но не команда обращения v-suspend-web-domain, тк о её работе ни слова в логе. Тогда как из консоли выполняется полностью и в логах пишется все.
Никак не пойму, что не так. Получается что команда из exec не выполняется.
Никак не пойму, что не так. Получается что команда из exec не выполняется.
Re: php скрипт в cron
Попробуйте сделать тестовый скрипт и добавтье его в крон.
Потом проверьте содержимое файла /tmp/test-log.txt
Code: Select all
#!/usr/local/vesta/php/bin/php
<?php
exec( 'sudo -u root -S /usr/local/vesta/bin/v-list-web-domains admin json', $output, $return_var);
unlink('/tmp/test-log.txt');
$fp = fopen('/tmp/test-log.txt', 'w');
foreach($output as $str){
echo $str."\n";
fwrite($fp, $str."\n");
}
fclose($fp);
Re: php скрипт в cron
Если скрипт выполняется кроном, то test-log.txt весом 0 байт, пустой.
А если выполнить через консоль, то test-log.txt вполне весомый и полон всякой инфы.
Дело в кроне получается? Не дает выполнить скрипт полноценно.
Я в основном девелопер по мелкософтовской системе, на Linux совсем еще школьник. Поэтому прошу прощения за возможно глупые вопросы.
А если выполнить через консоль, то test-log.txt вполне весомый и полон всякой инфы.
Дело в кроне получается? Не дает выполнить скрипт полноценно.
Я в основном девелопер по мелкософтовской системе, на Linux совсем еще школьник. Поэтому прошу прощения за возможно глупые вопросы.
Re: php скрипт в cron
Разобрался, тут моя невнимательность. Нехватало переменной VESTA, она объявлена в третьей строке.
Code: Select all
#!/usr/local/vesta/php/bin/php
<?php
putenv("VESTA=/usr/local/vesta");
exec( 'sudo /usr/local/vesta/bin/v-list-web-domains admin json', $output, $return_var);
unlink('/tmp/test-log.txt');
$fp = fopen('/tmp/test-log.txt', 'w');
foreach($output as $str){
echo $str."\n";
fwrite($fp, $str."\n");
}
fclose($fp);