незаконный код ошибки команды 127 в функции php exec

Я использую этот код php:

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

и получить код ошибки нелегальной команды, т. е. 127 … но когда я использую эту команду через ssh, она работает … потому что unrar установлен на сервере … так может кто-нибудь догадаться, почему exec не делает правильные вещи?

Related of "незаконный код ошибки команды 127 в функции php exec"

Попробуйте использовать прямой путь к приложению (/ usr / bin / unrar of any), похоже, что php не может найти приложение.

Если у вас есть chrooted apache и php, вы также захотите поместить / bin / sh в среду chrooted. В противном случае функции exec () или passthru () не будут работать должным образом и будут выдавать код ошибки 127, файл не найден.

Поскольку это появляется как главный ответ в google, я хотел бы поделиться своим исправлением:

Простое исправление, которое у меня было, – отключить safe_mode в файле php.ini

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

спасибо всем за ваш ответ !!

Я попробовал это

 // somedir находится внутри каталога, где php-файл
 ChDir ( "somedir");
 exec ("/ home / username / bin / unrar e /home/path/to/dir/file.rar");

и теперь он не возвратил код выхода … oher команды делают файл .. я пробовал mkdir и т. д.: s

ohkiee guyz thanx … и да могут быть некоторые ошибки с $ PATH … но с заданным полным ходом его работа 🙂

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

На всякий случай кто-то еще столкнется с этой проблемой, посмотрите здесь:

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

Цитата:

Я нашел проблему. Проблема заключалась в моей безопасности-параноидальной OpenBSD. При обновлении с 3.1 до 3.2 они добавили:

  • По умолчанию Apache работает chroot'd. Чтобы отключить это, см. Новый параметр -u.

Chroot предотвратил доступ Apache к чему-либо за пределами каталога, поэтому я переместил все в каталог apache, включая netpbm. Все было доступно и выполнимо, но я думаю, что он все еще находился в каком-то «безопасном режиме», потому что exec () всегда возвращал 127.

Во всяком случае, запуск httpd с параметром -u вернулся к менее безопасному запуску apache без chroot'd, что позволило exec () снова работать.