system () искажает команду в php - PullRequest
0 голосов
/ 11 января 2010

Я пытаюсь выполнить команду через system () в PHP. Это команда / usr / bin / unzip, но функция возвращается с кодом ошибки 127. Больше ничего не выводится. Если я запускаю ту же самую команду непосредственно в оболочке, она работает.

В журнале ошибок apache написано 'sh: / unzip: not found'. Я также попытался поместить команду в скрипт оболочки, который находится в том же каталоге, что и скрипт PHP, и вызвать скрипт оболочки через system (). То же самое происходит: если сценарий оболочки назывался doit.sh, сообщение об ошибке в журнале apache было бы sh: /doit.sh: not found.

exec () имеет такое же поведение.

Версия PHP 5.2.11-2 с расширениями suhosin.

Есть идеи, что PHP может делать с моей командой?

Ответы [ 4 ]

4 голосов
/ 11 января 2010

Вместо того, чтобы разархивировать вещи, вы можете просто использовать PHP функции zip .

3 голосов
/ 11 января 2010

Похоже, что вы отправляете команду 'unzip', когда вы должны использовать '/ usr / bin / unzip'

Если нет, то проверили ли вы, работает ли ваш веб-сервер в среде chroot?

С

1 голос
/ 11 января 2010

Может быть, попробовать просто с именем команды?

system('unzip somestuff', $retval);
0 голосов
/ 11 января 2010

Отключить безопасный режим в php.ini.

Если безопасный режим включен и свойство safe_mode_exec_dir пусто, вы получите точно такое же поведение, как описано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...