2014-04-25 20 views
5

Bir web sitesinde bir düğmeyi tıklayarak bir daemon (Debian'da) durdurmak/başlatmak mümkün olmak istiyorum. Daemon'un çalıştığını biliyorum, çünkü SSH ile başlıyor ve duruyor. HattaPhp ile bir daemon başlatın

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

Ama bu işe yaramazsa ile durumunu yakalayabilir:

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

bu hata alıyorum: Başlangıç ​​sistem MyService cini: başarısız! Sanırım izinlerle ilgisi var ama nasıl olduğunu bilmiyorum. .pid dosyasının izinleri -rwxrw-rw-

Bu https://stackoverflow.com/a/6720364/3486924 ve bu Starting a daemon from PHP'u okudum ancak her ikisi de işe yaramadı.

Herhangi bir fikrin var mı?

Teşekkürler

+0

-rwxrw-rw araçları dosyasını yürütebilirsiniz sadece sahibi .. varsa emin php sahip kullanıcı olarak çalışan var? Bir chmod + x 'yapabilir ve tekrar deneyebilirsiniz –

+0

Fcgi'yi kullanırken, betiğin sahibini, hizmetin çalışmasını istediğiniz birine değiştirin. – DanFromGermany

+0

Şimdi -rwxr-xr-x olarak değiştirildi. Hala başarı yok. – matzr

cevap

1

SO.

Bu kesin değil, ama iyi bir tahmin, php'nizin ssh aygıtınızdan farklı bir kullanıcı tarafından çalıştırılacağıdır. Ssh üzerinde kullandığınız bazı haklara sahiptir, php'nin çalıştığı başkaları da vardır.

Şunları yapabilirsiniz:

  1. (güvenlik sorunu değilse) bir

  2. 777 böyle bir şey için dosya izinlerini değiştirin ssh ile aynı olacak şekilde php kullanıcıyı değiştirme

  3. exec ('sudo /etc/init.d/MyService.sh start', $ output); - Eğer sudo

  4. Değiştir dosya sahibi (chmod)

+0

Muhtemelen aptalca bir soru, ama php kullanıcısının ne olduğunu nasıl öğrenebilirim? Apache'nin çalıştığı mı? – matzr

+0

Evet, haklısınız. – zozo

+0

İzin sorununun PID dosyasında bulunması mümkün mü? Komut dosyasında (chmod + x, chown) etc/init.d/dizininde denedim, ancak PID dosyasında ısrar etmedim. – matzr