【问题标题】:Make latex fonts available for all users for a php compilation使所有用户都可以使用乳胶字体以进行 php 编译
【发布时间】:2026-02-05 13:15:02
【问题描述】:

我在使用 PHP shell_exec 编译乳胶文档时遇到问题。我以为我已经解决了这个问题,但可惜我没有。

我之前也问过类似的问题:

Compiling a latex document from PHP

这个答案让我相信问题仅仅是执行 php 脚本的 www-data 用户无权访问正确的字体文件。

这个页面似乎有解决方案: How can I get PHP to compile a LaTeX document if it (www-data) can't get access to the required packages?

我所做的是以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 命令让所有用户永久看到该字体?

【问题讨论】:

    标签: php latex pdflatex


    【解决方案1】:

    好的,所以我找到了解决方法/解决问题的另一个线索。我只是在这里发布它,因此它可能对其他人有所帮助。

    首先,我错了。这不是用户权限问题。我将我的服务器用户名更改为我自己的,但我仍然遇到未找到字体的问题。

    但是我能够将问题隔离到其中一条乳胶线。

    特别是我一评论它就开始正常工作:

    \usepackage[T1]{fontenc}
    

    该行继承自我一直使用的标题,但不是文档的基础,因此设法解决了它。

    【讨论】:

    • 我终于让它与注释行一起工作了。我必须安装包 cm-super。以防它帮助任何人。