Фестиваль Text2wave не работает через nginx php exec

Я пытаюсь запустить команду оболочки text2wave в PHP на сервере nginx.

Проблема заключается в том, что команда просто выходит молча, не работая должным образом. Он также не отображает никаких ошибок.

Здесь код:

<?php
$result = `/usr/bin/text2wave --help`;
var_dump($result);

Если я запустил script через php-команду в оболочке (как обычный пользователь), она работает так, как ожидалось. Однако, если я запустил его через HTTP-запрос через nginx, var_dump возвращает NULL (в журналах ошибок также нет журналов)

Спасибо за вашу помощь!

Ответ 1

попробуйте:

<?php
function sys_cmd($cmd)
{   
    $hd = popen($cmd,"r") or die('function disabled');
    while (!feof($hd))
    {
        $rs .= fread($hd,1024);     
    }
    pclose($hd);
    return $rs;
}
echo sys_cmd('ls -l');
?>

Ответ 2

Я предполагаю, что вы отключили выполнение оболочки в файле конфигурации php.ini, используемом вашим веб-сервером.

Попробуйте открыть файл /etc/php5/fpm/php.ini, найдя директиву disable_functions и убедившись, что в значении директивы присутствует none: shell_exec,exec,passthru,system

Ответ 3

Для кого-то, занимающегося той же проблемой... Мне удалось выяснить, в чем проблема. Ну.. вроде.

Я переключился на apache, и он сразу начал работать. Поэтому решение не использовать nginx

Я предполагаю, что это как-то связано с тем, как nginx запускал php при выполнении команд exec...

Хотя это было трудное решение, я не нашел другого решения, кроме как перейти на apache... теперь хорошо работает