Любая идея, почему я могу выполнить команду из командной строки, но не из PHP exec () - PullRequest
4 голосов
/ 09 января 2011

ОК,

Я провел несколько творческих поисков и вроде как проехал блокпост.

Я пытаюсь использовать программу linux "sox". Я пытаюсь вызвать его из моего сценария PHP. Скрипт работает, если я использую командную строку. Однако, когда я использую PHP exec, он не работает.

Пример:

sox file1.mp3 file2.mp3 tempfile.mp3 -V3

(«V3» указывает на подробный вывод)

При выполнении в командной строке как «Пользователь X» или как пользователь root, я могу создать новый файл. Однако, когда я выполняю команду как:

<?php
exec('sox file1.mp3 file2.mp3 tempfile.mp3  -V3', $output);
foreach($output as $line){
print $line;
}

Новый файл не генерируется. Кроме того, массив, который должен возвращать результаты команды, пуст.

Я сделал простой текст с

exec(ls,$output);

и я получаю содержимое корневого каталога.

Я использовал команду PHP get_current_user(), и она вернула владельца каталога, являющегося корнем веб-сайта.

Однако, когда я использую команду linux whoami, я обнаружил, что она рассматривает текущего человека как «apache». Нужно ли дать Apache права на использование программы?

Я буду продолжать искать в Интернете и делать проб и ошибок, чтобы выяснить, что я делаю неправильно. Любая помощь приветствуется.

Разъяснения

  • Я не в безопасном режиме (я проверил phpinfo () page ")

Ответы [ 3 ]

3 голосов
/ 09 января 2011

Обычно это проблема пути. Приложение, которое вы пытаетесь вызвать, вероятно, отсутствует в пути поиска учетной записи пользователя веб-сервера. Я только вызываю приложения из PHP, используя полный путь. Я храню этот путь в файлах настроек, чтобы он работал в любой системе, в которой он используется.

2 голосов
/ 09 января 2011

Я уверен, что php запускается как пользователь, запускающий ваш apache, и это чаще всего никто (пользователь без прав на создание каталогов).Попробуйте создать свой вывод где-нибудь, где всем разрешено писать, и проверьте, работает ли пользователь apache.

0 голосов
/ 09 января 2011

Проверьте, используете ли вы сейчас PHP в safe_mode

...