Upstart - сервис сразу останавливается после запуска

Вот мой файл /etc/init/jobname.conf:

start on startup
stop on shutdown
respawn

script
    php /home/inersha/file.php
end script

Когда я запускаю службу, она немедленно останавливается:

$ sudo service jobname start
jobname start/running, process 16703
$ sudo service jobname status
jobname stop/waiting

Когда я запускаю php /home/inersha/file.php из командной строки, она работает хорошо. Кроме того, у меня точно такая же настройка на локальном компьютере, и это тоже работает ... он просто останавливается на моем удаленном сервере.

Почему это происходит?

0
задан 31 May 2016 в 00:23

2 ответа

Я проверил /var/log/upstart/JOBNAME.log для наблюдения то, что продолжалось.

Оказывается, что у меня была относительная ссылка в моем file.php, как это:

 <?php
 include '../somethin.php'
 ?>

я думаю, что эта выскочка выполняет этот сценарий как корень /, таким образом, он не может перейти по относительной ссылке. Таким образом, я изменил его на абсолютную ссылку, и это хорошо работает:

 <?php
 include '/home/inersha/folder/somethin.php'
 ?>
0
ответ дан 31 May 2016 в 00:23

По сравнению с другим SAPIs CLI SAPI делает не , изменяют текущий рабочий каталог на тот, в котором находится запущенный сценарий.

А портативный путь состоял бы в том, чтобы использовать функцию realpath и постоянный __ DIR __ :

<?php
require_once realpath(__DIR__ . '../somethin.php')

Короче говоря, при выполнении пути CLI SAPI относительно каталога в который запущенный процесс PHP:

ubuntu@h6fk4:~$ cat test.php include-me.php 
<?php
echo getcwd() . PHP_EOL;
require_once './include-me.php';
<?php
echo 'I been included!' . PHP_EOL;
ubuntu@h6fk4:~$ php test.php 
/home/ubuntu
I been included!
ubuntu@h6fk4:~$ cd /srv/
ubuntu@h6fk4:/srv$ php ~/test.php 
/srv
PHP Warning:  require_once(./include-me.php): failed to open stream: No such file or directory in /home/ubuntu/test.php on line 3
PHP Fatal error:  require_once(): Failed opening required './include-me.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/ubuntu/test.php on line 3

выскочка Использования setuid и setgid строки файла конфигурации для изменения на пользователя/группу прежде, чем выполнить процесс задания как @bc2946088 рекомендуемый.

0
ответ дан 31 May 2016 в 00:23

Другие вопросы по тегам:

Похожие вопросы: