2014-04-25 2 views
5

웹 사이트의 버튼을 클릭하여 데비안에서 데몬을 시작/중지 할 수 있습니다. 나는 데몬이 작동한다는 것을 안다. 왜냐하면 SSH를 통해 시작하고 멈추기 때문이다. 난PHP로 데몬 시작하기

$status = exec("/etc/init.d/MyService.sh status | grep 'is running'"); 

그러나이 작동하지 않습니다와 상태를 캡처 할 수 있습니다 :

exec('/etc/init.d/MyService.sh start', $output); 

나는이 오류를 얻을 : 시작 시스템이면 MyService 데몬 : 실패! 나는 권한과 관련이 있다고 생각하지만 어떻게해야할지 모르겠다. .pid 파일의 사용 권한은 -rwxrw-rw-

입니다. 나는이 https://stackoverflow.com/a/6720364/3486924Starting a daemon from PHP을 읽었지만 두 가지 모두 도움이되지 않았습니다.

아이디어가 있으십니까?

감사합니다.

+0

-rwxrw-rw-을 수단 파일을 실행할 수 있습니다 소유자 만 ..이 경우는 반드시 PHP를 소유하는 사용자로 실행된다? 'chmod + x'를하고 다시 시도하십시오 –

+0

fcgi를 사용할 때, 스크립트의 소유자를 서비스가 실행되기 원하는 것으로 변경하십시오. – DanFromGermany

+0

-rwxr-xr-x로 변경되었습니다. 여전히 성공하지 못했습니다. – matzr

답변

1

에 오신 것을 환영합니다.

이것은 확실하지 않지만 php가 ssh보다 다른 사용자로 실행되는 것이 좋습니다. ssh에서 사용하는 것은 권리를 가지고 있고, php가 실행중인 것은 다른 것을 가지고 있습니다.

당신은 할 수 있습니다

  1. 는 (보안 문제가되지 않는 경우) 한

  2. 777처럼 뭔가에 파일 권한을 변경 SSH와 동일하게하여 PHP 사용자를 변경

  3. exec ('sudo /etc/init.d/MyService.sh start', $ output); - 당신은 sudo를

  4. 변경 파일 소유자 (chmod를)

+0

아마 바보 같은 질문이지만 PHP 사용자가 무엇인지 어떻게 알 수 있습니까? 아파치가 실행되는 것입니까? – matzr

+0

네, 맞습니다. – zozo

+0

권한 문제가 PID 파일에있을 수 있습니까? etc/init.d /에있는 스크립트 파일에서 (chmod + x, chown)을 모두 시도했지만 PID 파일에는 유지되지 않으므로 시도하지 않았습니다. – matzr