Вот мой файл /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
из командной строки, она работает хорошо. Кроме того, у меня точно такая же настройка на локальном компьютере, и это тоже работает ... он просто останавливается на моем удаленном сервере.
Почему это происходит?
Я проверил /var/log/upstart/JOBNAME.log
для наблюдения то, что продолжалось.
Оказывается, что у меня была относительная ссылка в моем file.php
, как это:
<?php
include '../somethin.php'
?>
я думаю, что эта выскочка выполняет этот сценарий как корень /
, таким образом, он не может перейти по относительной ссылке. Таким образом, я изменил его на абсолютную ссылку, и это хорошо работает:
<?php
include '/home/inersha/folder/somethin.php'
?>
По сравнению с другим 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 рекомендуемый.