为什么 php exec() 无法执行 .tex→xelatex→.pdf,但可以执行 .tex→xelatex→.xdv→xdvipdfmx→.pdf?

为什么 php exec() 无法执行 .tex→xelatex→.pdf,但可以执行 .tex→xelatex→.xdv→xdvipdfmx→.pdf?

命令的召唤:

$dir = "/path/to/source/file";
exec("cd $dir;xelatex filesource.tex", $output_array[0]);

总是失败,但是:

$dir = "/path/to/source/file";
exec("cd $dir;/usr/texbin/xelatex -no-pdf filesource.tex", $output_array[0]);// now we have .xdv file
exec("cd $dir;/usr/texbin/xdvipdfmx filesource.xdv", $output_array[1]); 

成功了,结果 .pdf 文件绝对有效。有什么诀窍吗?

答案1

一般而言主要有两种情况:

  • 您的 LaTeX 二进制文件为系统所知(无论您使用哪种):这种情况非常简单,因为您可以简单地使用第一种方法,而无需二进制文件的完整路径。
  • 您的 LaTeX 二进制文件对系统来说是未知的:如果您不是通过存储库安装 LaTeX(如果您使用的是 Linux),而是使用 TeX Live 安装程序 fi,您会在系统未知的位置找到它们。您必须将它们添加到 PATH 中,以便可以找到它。另一种方法是在调用时使用完整路径。

您的系统似乎属于第二种类型。因此,您应该告诉 PHP 将 LaTeX 二进制路径添加到 PATH,或者在调用时使用完整路径。

相关内容