Upstart - O serviço pára imediatamente após o início

0

Este é o meu arquivo /etc/init/jobname.conf :

start on startup
stop on shutdown
respawn

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

Quando inicio o serviço, ele para imediatamente:

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

Quando executo php /home/inersha/file.php da linha de comando, tudo funciona bem. Além disso, tenho exatamente a mesma configuração no meu computador local e isso funciona também ... ele apenas pára no meu servidor remoto.

Por que isso está acontecendo?

    
por inersha 30.05.2016 / 13:23

2 respostas

0

Eu verifiquei /var/log/upstart/JOBNAME.log para ver o que estava acontecendo.

Acontece que eu tinha um link relativo no meu file.php , assim:

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

Acho que este upstart executa esse script como root / , por isso não é possível seguir o link relativo. Então eu mudei para um link absoluto e funciona bem:

 <?php
 include '/home/inersha/folder/somethin.php'
 ?>
    
por inersha 30.05.2016 / 13:41
0

Em comparação com outros SAPIs CLI SAPI não altera o diretório de trabalho atual para aquele em que o script iniciado reside.

Uma maneira portátil seria usar a função realpath e constante __DIR__ :

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

Em resumo, quando os caminhos CLI SAPI são relativos ao diretório em que o PHP processo iniciado:

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

Use upstart setuid e setgid sub-rotinas para mudar para o usuário / grupo antes de executar o processo do trabalho como recomendado @ bc2946088.

    
por Goran Miskovic 04.06.2016 / 12:13

Tags