2016-03-21 21 views
0

Bir python betiği çalıştırmam gerekir; bu nedenle, komut dosyasının çalışması için bir sanal env'yi etkinleştirmem gerekiyor ve kök klasörde. Bu, (kaynak komutunu kullanmadan) bunu apache'den nasıl yürütürüm? Php'de 126 hata alıyorum. Asıl yolu verdim.Apache'den kök klasördeki komut dosyalarını php kullanarak nasıl çalıştırılır?

126 hata, "Komuta çağrı başlatılamadı. Bir izin veya komut çalıştırılamaz bir sorun." Nasıl yapabilirim? Asıl yol kök klasörde, onu root'un dışına taşıyamam.

<?php 
    $op=exec('/root/Envs/ate/bin/python /var/www/cgi-bin/TStool  /box_upgrade.py',$output,$return); 
    echo "Dir returned $return, and output:\n"; 
    var_dump($output); 
    echo $return; 
    echo $op; 
    ?> 

Herhangi bir öneriniz var mı? Teşekkürler.

+0

Web sunucunuz root mu çalışıyor? Aksi takdirde, muhtemelen/root/'dizinindeki herhangi bir şeye erişemez. – Chris

+0

Hayır, apache olarak çalışıyor. Ama ben de tüm Envs/ate/bin/python klasörünü başka bir klasöre taşımaya çalıştım ve betiği çalıştırmayı denedim ama geri dönüş kodu 1 (genel hata) verdi. Hatanın ne olduğundan emin değil. – Learner

+0

Bunu, makine önyükleme bash komut dosyası veya benzeri yerine PHP betiği olarak çalıştırmanız için bir nedeniniz var mı? PHP'den çalıştırılması genellikle inanılmaz derecede güvensizdir. –

cevap

1

Geçtiğimiz günlerde PHP'nin gerçek bir Bash kabuğunu (istendiğinde root olarak) alıp etkileşimde bulunmasına izin veren bir proje yayınladım, exec() ve shell_exec() sınırlamalarını çözüyor. Oradan indirebilirsiniz: https://github.com/merlinthemagic/MTS

sadece şu kodu kullanırsınız indirdikten sonra: Güvenlik açısından

$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true); 
$return1 = $shell->exeCmd('/root/Envs/ate/bin/python /var/www/cgi-bin/TStool/box_upgrade.py'); 
//the return will be a string containing the return of the command 
echo $return1; 

o root olarak apache çalıştıran çok daha iyidir. Ancak, PHP'nin root'a yakın bir yerde olmasına izin vermek her zaman zor olur.

1) sudo piton hakkını apache izin:

i inşa projesi 2 yöntemden biriyle bir kök bash kabuğunu başarır.

VEYA ) Sen nesneye kök kurulum ile bir kabuk gerekir her zaman kök kimlik geçmektedir.

Zehirinizi seçin. :) Belgeleri okuyun.

İlgili konular