Ubuntu не может выполнить exec (test.sh) в php

В моем php-коде:

exec(test.sh);

и в test.sh есть код:

echo "Hi this is test?" | espeak --stdout > demo.wav

Но ничего не происходит. Нет ошибки, нет вывода.

Если я попытаюсь выполнить test.sh из терминала, он будет работать отлично. Так почему же он не работает на моем php.

Кто-нибудь может мне помочь?


person ishita    schedule 23.10.2013    source источник
comment
может быть несколько вещей: вы выполняете php из командной строки или используете apache? если вы используете apache, есть ли у него права на выполнение test.sh? Видите ли вы какую-либо ошибку в error_log используемого вами apache/веб-сервера?   -  person Naryl    schedule 23.10.2013
comment
возможный дубликат: stackoverflow .com/questions/7397672/   -  person aaron    schedule 23.10.2013
comment
Я запускаю php из apache. test.sh уже имеет права на выполнение. В error_log ошибки нет.   -  person ishita    schedule 23.10.2013


Ответы (2)


Как вы запускаете свой PHP-скрипт? С php-cli (в режиме оболочки)? HTTP (Апач, ...)?

Это может быть проблема пути. Не могли бы вы дать нам путь к вашему test.sh, путь к вашему php-скрипту или URI, который вызывается для запуска PHP, если вы используете apache или другой HTTP-сервер?

person Idriss Neumann    schedule 23.10.2013
comment
Я запускаю php на http (Apache). Это не проблема пути, если я повторю некоторый текст в test.sh, он будет работать нормально. но espeak не смог создать файл demo.wav из файла php. Пожалуйста помоги мне с этим. - person ishita; 23.10.2013
comment
Когда вы запускаете сценарий оболочки из командной строки, удаляете ли вы выходной файл demo.wav? Каков доступ к текущему каталогу? - person Idriss Neumann; 23.10.2013
comment
Я удалил этот файл. Из командной строки работает. Но, но с сервера LAMP он не будет генерировать вывод. Этот каталог имел разрешение 777. - person ishita; 24.10.2013

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

person Cwissy    schedule 23.10.2013
comment
Оба файла имели доступ для записи. Я думаю проблема с командой espeak. У меня уже был eSpeak в моей Ubuntu, и он работает как приложение. - person ishita; 24.10.2013