Некоторые команды недоступны с PHPs exec (), но работают с командой Ruby 'System' - PullRequest
1 голос
/ 19 марта 2012

На моем локальном компьютере я могу запустить следующую команду в приложении rails из контроллера через Google Chrome:

system 'say hello dan'

Это приводит к ожидаемому результату - программа 'say' на моем mac говорит "hello dan".

Выполнение той же команды из контроллера в приложении PHP или любого php-скрипта через google chrome, и вывод не производится.

exec('say hello dan'); или exec('/usr/bin/say hello dan'); оба не работают.

Я проверил разрешения, но apache работает под тем же пользователем, что и я.

Запуск сценария, содержащего этот код из командной строки, однако, работает!

Кто-нибудь может подсказать, почему определенные программы не работают? Другие команды, такие как afplay и другие стандартные команды в / usr / bin, работают просто отлично.

1 Ответ

2 голосов
/ 19 марта 2012

Ваш сервер может быть настроен на использование PHP в безопасном режиме. Безопасный режим ограничивает exec () следующим образом:

"Вы можете выполнять исполняемые файлы только в пределах safe_mode_exec_dir. По практическим причинам в настоящее время не разрешено иметь .. компоненты в пути к исполняемому файлу. Escapeshellcmd () выполняется в аргументе этой функции."

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