Не можете выполнить внешнюю программу через system ()? - PullRequest
5 голосов
/ 19 марта 2012

Я попытался скомпилировать свой латексный файл в php-скрипте, но он не может вызвать xelatex.

В php-скрипте:

system("/usr/bin/whoami");
system("/usr/bin/xelatex foo.tex 2>&1");

output:

myuser
sh: 1: /usr/bin/xelatex: not found

Но в моем терминале:

$ /usr/bin/whoami
=> myuser
$ /usr/bin/xelatex foo.tex
This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX Live 2009/Debian)
...(successful output)...

Я запускаю php как myuser и передаю system() абсолютный путь.И я выключаю safe_mode.Почему я не могу по-прежнему выполнять внешние программы?

Ответы [ 3 ]

1 голос
/ 19 марта 2012

Наконец я связался с системным администратором и обнаружил проблему. Машина находится в NFS, поэтому оболочка apache и login находятся на разных машинах. На компьютере, где работает apache, нет xelatex.

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

Вы уверены, что это не файл 'foo.tex', который он не может найти?Попробуйте получить вывод оболочки в файл, например system("/usr/bin/xelatex ./foo.tex > ./test.out");, и посмотрите, что вам повезет.

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

Проверьте разрешение каталога, из которого вы запускаете свой PHP-код. проверка прав доступа myuser

просто для проверки попробуйте с правами root.

Надеюсь, что эта помощь

...