Запуск установленных двоичных файлов из PHP-скрипта (как apache)

Я пытаюсь написать PHP-скрипт для запуска довольно простой команды оболочки. Команда Pygmentize представляет собой двоичный файл, который я установил и находится в /usr/local/bin/pygmentize-1.4. Это отлично работает в командной строке моего веб-сервера (каталог на сервере apache), но когда я попытался включить оператор в скрипт PHP, он терпит неудачу.

$command = "pygmentize -f html $extra_opts -l $language $temp_name";
$output = array();
$retval = -1;

exec( $command, $output, $retval );
echo $retval;

Команда возвращает значение 127, что, по-видимому, означает, что скрипт не может найти двоичный файл, и я думаю, что я установил его в неправильное место. Я установил его в каталог, расположенный в том же каталоге, что и PHP-скрипт, но я не уверен, куда идти дальше. Любой совет будет принят с благодарностью!

Подводя итог, я думаю, как и где я могу установить Pygments, чтобы он был доступен для моего скрипта?


person pdt2383    schedule 04.06.2013    source источник
comment
используйте полный путь, например "/path/to/pygmentize ...". Помните, что exec() в Apache будет иметь другую среду оболочки (включая $PATH), чем ваши стандартные оболочки входа в систему.   -  person Marc B    schedule 04.06.2013
comment
попробуйте запустить как __DIR__."/pygmentize -f html $extra_opts -l $language $temp_name"   -  person Orangepill    schedule 04.06.2013
comment
вам также может потребоваться вызвать putenv, чтобы получить любую переменную среды, которая может понадобиться команде   -  person Orangepill    schedule 04.06.2013


Ответы (1)


Используйте полный путь, потому что php работает под другим пользователем, а ./ не является каталогом apache, когда этот пользователь выполняет скрипт:

$command = "/usr/local/bin/pygmentize-1.4-f html $extra_opts -l $language $temp_name";
person bpoiss    schedule 04.06.2013