PHP Fedora 10 sistem komutları ve kabuk komut dosyalarını aramak için açılamıyor

4 Cevap php

PHP ve Apache ile Fedora 10 makine üzerinde yerel çalışan bir uygulama üzerinde çalışıyorum. Bu arka planda çalışan bir süreç bağlıdır.

Yüksek-up tarayıcı aracılığıyla, süreci yeniden başlatmak / start / stop edebilmek istiyorum. Ben bu PHP exec () ve shell_exec kullanarak sisteme çağrı yapmak zorunda tarafından işe almak için çalışıyordu, ama çalışmak için görünmüyor.

Ben "exec ('ProcessName')" kullanarak işlemini başlatmaya çalıştığınızda hiçbir şey olmuyor.

Ben "exec ('killall ProcessName')" kullanmaya çalıştığınızda (ben müsamahakâr moduna koymak için), SELinux sürekli ancak aslında süreci öldürmek değil, süreç izin olduğu uyarıları haşhaş başlar! Ama bu sayfayı tamamen yüklendikten sonra bile gitmek gibi görünüyor!?!?

"Exec ('/ var / www / cgi-bin / ControlProgram BAŞLAT'):" Ben benzer bir şekilde başka bir komut dosyası çağırmak mümkün AM. Yani büyük farklılıklar iki çağrıları / komutları arasında ne gerçekten emin değilim.

Ben de girişte çalışacak komut dosyası var / etc / rc.local dosyasına komut dosyası çağrısı koydu. Onun tarafından ... sistemde çalıştırmak Ancak, ben PHP bu komut dosyasını öldürmek mümkün olacak?

Ben izinleri / SELinux'un geldiğinde bir guru değilim, bu yüzden kanlı detayları üzerinde yedek yok! Şimdiden teşekkürler!

4 Cevap

Ben sorunu buldum inanıyorum. Ben hala sorunun ne olduğunu tam olarak emin değilim, ama bu dosya / dizin izinleri ile ilgili bir şey var gibi görünüyor. Benim / var / www / html dizine komut taşındı, komut koştu. I / var / www / cgi-bin içine taşındı ve onlar da orada çalışmak. Bu yüzden apache / var / www dizini dışında komut dosyalarını yürütmek değil, ya da en azından bunu doğrudan yapamayacağı bir şey olabilir. Olsa Yardımlarınız için teşekkürler!

Bu benim için çalışıyor:

<?php

$e = exec("/bin/bash -c 'sleep 5'");

?>

Bir terminal, gösterileri bu Koşu

$ ps -e | grep sleep
apache   12716  0.0  0.0   1884   400 ?        S    02:07   0:00 sleep 5

Ben Fedora 10, ve PHP:

$ rpm -q php
php-5.2.6-5.i386

Ben yine PHP komut dosyası deneyin ve watch 'ps -e | grep sleep' çalıştırırsanız, süreç görünür, ve ben bu PHP komut dosyası çalıştırdığınızda o kaybolur.

<?php

exec("killall sleep");
?>

Bir SELinux'un sorunu olsaydı Açıkçası, doğru yoldayız. Belki PHP farklı varsayılan daha yapılandırılmış var?

Eğer bu sistem üzerinde idari kontrol varsa (emin web sunucusu için yapılandırma profili olun) PHP yapılandırmasını kontrol etmek isteyecektir.

Safe_mode belirli bir klasör dışında bir şey yürütülmesini PHP önleyecektir. Notlarınıza dayalı durum gibi görünüyor - bir paylaşılan barındırma ortamında, bu genellikle yalnızca home / www klasörüne göreceli şeyler çalıştırmak anlamına gelir.

Bu eski okul Unix izinleri gibi geliyor ve nasıl apache çalışır. Ben (bu biraz zaman oldu ama) o apache yürütebileceği ne dikkatli olduğunu anımsamıyorum. Lütfen octals kontrol çift.

O SELinux'un olmadığını doğrulamak için yerine permisif onu koyarak devre dışı bırakabilirsiniz. Bu bir dosya sistemi yeniden isimlendirmekte (ya da olmalıdır) neden olsa. Bu noktada SELinux bağlamlarda ile genişletilmiş öznitelikleri wack dışarı alabilir ve tekrar uygulanması kez SELinux'un sorunlara neden.