Здравствуйте. Я только начинаю изучение, поэтому мои вопросы могут казаться простыми. Но я уже несколько дней бьюсь над этой проблемой и зашел в тупик.
Если коротко, то проблема заключается в том, что внешняя программа, вызываемая из php-скрипта работает не так, как если ее вызывать из консоли через ssh, при том, выполнение происходит из-за под одного и того же пользователя.
Из консоли по ssh захожу из-под myusername (не root) и выполняю:
$cd /var/www/myusername/data/www/mysitename/tmp
/var/www/myusername/data/www/mysitename/tmp$ /usr/bin/pdflatex myfile.tex
И все отлично работает, в папке tmp появляется pdf файл.
Но если вызываю эту же команду из PHP скрипта:
$pipes = array();
$options = array();
$cmd = '/usr/bin/pdflatex myfile.tex';
$cwd = '/var/www/myusername/data/www/mysitename/tmp';
proc_open( $cmd, $options, $pipes, $cwd );
или из CGI-скрипта:
#!/bin/sh
echo Content-type: text/html
echo
cd /var/www/myusername/data/www/mysitename/tmp
/usr/bin/pdflatex myfile.tex
то в папке tmp программа pdflatex создет лог-файл с описанием ошибок. Ошибки связаны с недоступностью файлов некоторых шрифтов. Причем создаваемые файлы имеют в атрибутах владельца myusername. Значит PHP и вызываемая им pdflatex выполняется из-под myusername. Причем, если в файле myfile.tex не используются кириллические пакеты, то все нормально работает и из PHP, и из CGI. Значит проблема в том, что программа pdflatex не может получить или сгенерировать временные файлы с шрифтами.
Из-за чего может быть разница? Какие ограничения в правах дает выполнение через Apache? И главное, как это исправить? Хотя бы в каком направлении искать? Боюсь, что очень долго не смогу решить проблему, если буду изучать всю документацию.
На всякий случай скажу, что ОС Debian7, а pdflatex - программа из пакета texlive, который предназначен для работы с LaTeX.