php shell_exec() через cygwin

Я написал скрипт, который компилирует код LaTeX через pdftex. Проблема в том, что pdftex работает только на Linux.

Я выполняю эту задачу с использованием shell_exec().

У меня нет возможности настроить Linux как веб-сервер. У меня есть клиентский компьютер, но он находится за брандмауэром, который я не контролирую. У меня есть контроль над моим рабочим сервером, на котором работает SBS 2003 с виртуальной машиной Windows 2000, на которой работают apache и php. Насколько мне известно, вы не можете установить pdftex в Windows, а если и сможете, то он не будет работать с shell_exec().

Есть ли способ обойти это с помощью cygwin? Я мог бы установить pdftex в cygwin, а затем настроить php для запуска shell_exec() команд внутри cygwin. Если это возможно, может ли кто-нибудь указать мне правильное направление?

Кроме того, мне интересно, есть ли другой курс действий. Я был бы не против купить хостинг, но ни один план виртуального хостинга не будет поддерживать приложение. Это должен быть план виртуального или выделенного хостинга; что-то, что я не могу себе позволить.


person objectivesea    schedule 05.01.2009    source источник


Ответы (2)


pdfTeX прекрасно работает в Windows, не требуя Cygwin. Попробуйте MiKTeX.

person ChrisN    schedule 05.01.2009
comment
Спасибо! Мне пришлось немного изменить код, но это была именно та информация, которая мне была нужна. - person objectivesea; 06.01.2009

Для всех, кто заинтересован в запуске shell_exec() через Cygwin, ознакомьтесь с этой ссылкой на комментарий в руководстве по PHP:

http://us.php.net/manual/en/function.shell-exec.php#68647

 $result = shell_exec("C:\cygwin\bin\bash.exe --login  -c '/cygdrive/c/cygwin/bin/convert.exe --version'");

Ключом является опция «--login», которая добавляет все необходимые общие бинарные и библиотечные пути cygwin к $PATH. Без этой опции некоторые двоичные файлы cygwin, которые ссылаются на другие библиотеки (например, двоичные файлы ImageMagick, которые ссылаются на X11), не будут работать, и вы можете увидеть такие ошибки, как «cygX11-6.dll не найден, не удалось запустить convert.exe».

person phirschybar    schedule 13.09.2009