У меня проблемы с компиляцией латексного документа с использованием PHP shell_exec. Я думал, что решил проблему, но, увы, нет.
Я спрашивал что-то подобное раньше:
Компиляция латексного документа из PHP
И этот ответ заставил меня поверить, что проблема заключается просто в том, что пользователь www-data, который выполняет сценарии php, не имеет доступа к нужному файлу шрифта.
Казалось, что эта страница имеет решение:
Как мне заставить PHP скомпилировать документ LaTeX, если он (www-data) не может получить доступ к необходимым пакетам?
Что я сделал, так это вошел в систему как пользователь root, выполнил команду, и она выдала кучу текста, но об ошибке не сообщалось. Затем я снова попробовал свою веб-страницу, и ошибка шрифта не найдена.
Каждый раз, когда я пытаюсь выполнить компиляцию, я получаю сообщение об ошибке:
<inti.pdf, id=1, 533.995pt x 298.11375pt> <use inti.pdf> [1{/var/lib/texmf/font
s/map/pdftex/updmap/pdftex.map} <./inti.pdf>]
(./report.aux) )
!pdfTeX error: pdflatex (file ecrm1095): Font ecrm1095 at 600 not found
Не знаю, важна ли первая часть сообщения или нет, поэтому я все равно скопировал ее (inti.pdf — это картинка в report.tex).
Файл missingfont.log имеет следующую строку:
mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 ecrm1095
Как сделать так, чтобы шрифт был виден системой. Может быть, установка переменной среды? Или команда Sudo, чтобы шрифт был постоянно виден всем пользователям?
Итак, я нашел обходной путь / другой ключ к решению проблемы. Я только размещаю это здесь, чтобы это могло помочь кому-то еще.
Во-первых, я был неправ. Это не проблема разрешения пользователя. Я изменил свое имя пользователя сервера на свое собственное, и у меня все еще была проблема со шрифтом не найдена.
Однако мне удалось выделить проблему в одной из линий латекса.
В частности, он начал работать правильно, как только я прокомментировал:
\usepackage[T1]{fontenc}
Строка была унаследована от заголовка, который я всегда использую, но не была принципиальной для документа, и, следовательно, это удалось решить.
Других решений пока нет …