php exec fonksiyonu geçersiz komut hata kodu 127

6 Cevap php

Ben bu php kodu kullanıyorum:

exec("unrar e file.rar",$ret,$code);

ve 127, yani yasadışı komutun bir hata kodu alıyorum ... ama ben ssh'dan onun çalışmasını bu komutu kullanarak olduğumda ... unrar sunucuda yüklü olduğundan exec doğru şeyler yapmıyor neden ... bu yüzden herkes tahmin edebilir?

6 Cevap

Php uygulama bulamıyor gibi uygulama (ne olursa olsun, / usr / bin / unrar) doğrudan yolunu kullanmayı deneyin, bu sesler.

Eğer apache ve php chrooted varsa, siz de chroot içine / bin / sh koymak isteyeceksiniz. Aksi takdirde, exec () veya Geçiş () düzgün çalışmaz ve hata kodu 127 üretecek, dosya bulunamadı.

Yanıtınız için tüm thanx!

Ben bu çalıştı

//somedir is inside the directory where php file is
chdir("somedir");
exec("/home/username/bin/unrar e /home/path/to/dir/file.rar");

s: ve şimdi oher komutları .. ben mkdir vb denedim .. dosyayı yapıyorsun ... hiçbir çıkış kodu döndürdü

Bu google bir üst cevap olarak çıkageldi beri, benim düzeltme paylaşmak istedim:

Ben basit bir düzeltme php.ini dosyasında safe_mode devre dışı bırakmak oldu

; Safe Mode
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
safe_mode = Off

ohkiee guyz thanx ... ve evet $ PATH ile bazı hatalar olabilir ... ama tam yol onun çalışma verilen :)

exec("/home/user/bin/unrar e /home/user/xxx/yyy/file.rar");

Başkası hala bu sorunu alır, sadece durumda, burada yazılan bir göz atın:

http://gallery.menalto.com/node/2639#comment-8638

Alıntı:

Ben sorunu buldum. Sorun benim güvenlik paranoyak OpenBSD oldu. 3,1-3,2 yükseltirken onlar ekledi:

  • Apache varsayılan chroot'd çalışır. Bu devre dışı bırakmak için, yeni-u seçeneğine bakın.

Chroot bir dizin dışında bir şey erişmesini Apache engelledi, bu yüzden Netpbm dahil apache dizine her şeyi taşındı. Her şey erişilebilir ve çalıştırılabilir, ama exec () her zaman 127 döndü çünkü "güvenli mod" bir çeşit hala oldu sanırım.

Neyse,-u seçeneği ile httpd çalışan geri exec () tekrar çalışmak için izin daha az güvenli olmayan chroot'd apache başlatma, gitti.