由于权限/所有权问题,无法使用 exec() 函数在 PHP 脚本中使用 Ubuntu 字体

由于权限/所有权问题,无法使用 exec() 函数在 PHP 脚本中使用 Ubuntu 字体

我正在使用 Ubuntu 14.04 Server 64 位 VPS,我想用它XeLaTeX来创建具有所需字体的 PDF 文件。我已经安装了字体,XeLaTex如果我从终端执行它,它就可以正常工作:

xelatex sample.tex

并且它毫无问题地生成了sample.pdf。但如果我从PHPexec()函数执行相同的命令,如以下命令:

$cmd = "cd folder && xelatex sample.tex";

$excute  = shell_exec($cmd);

我将面临“找不到字体”的问题。因为一切正常,我认为问题出在字体权限或所有权上。我尝试将特定字体文件夹和文件的权限更改为,甚至尝试将所有权更改为拥有 PHP 文件的所有者,但我无法解决问题。出于安全考虑,744我不想使用它来执行命令。sudo

我应该如何让 Ubuntu 字体可用于 PHP 脚本?

更新 1:

这是我的 sample.tex 文件,我使用 settextfont 来选择字体:

\documentclass[a4paper,12pt]{report}    
\usepackage{amsthm,amsmath}
\usepackage{amssymb}    
\usepackage{mathrsfs}    
\usepackage{graphicx}    
\usepackage[top=3cm,right=3cm,bottom=2.5cm,left=2.5cm]{geometry}    
\usepackage{xepersian}    
\settextfont[Scale=1.1]{XB Yas}    
\setdigitfont{XB Yas}

\begin{document}    
    Hello, This is a test file.
\end{document}

更新 2:

我把代码改成如下形式:

\documentclass[a4paper,12pt]{report}    
\usepackage{amsthm,amsmath}
\usepackage{amssymb}    
\usepackage{mathrsfs}    
\usepackage{graphicx}    
\usepackage[top=3cm,right=3cm,bottom=2.5cm,left=2.5cm]{geometry}   
\setmainfont{Yas}[Path = /var/www/html/fonts/,UprightFont = *-Rg,Extension = .ttf]

\begin{document}    
    Hello, This is a test file.
\end{document}

但现在我面临以下错误:

fontspec error: "font-not-found"

The font "Yas-Rg" cannot be found.

/var/www/html/fonts 中有 Yas-Rg.ttf、Yas-Bd.ttf 和其他字体,所有权已设置为拥有 PHP 脚本的人,并且权限已设置为 774。

答案1

假设您正在使用该fontspec包,并且根据fontspec 包文档(第 9 页),您应该能够将所需的字体放在 apache 获得正确权限的文件夹中:

To load a font that is not in one of the default search paths, its 
location in the filesystem must be specified with the Path feature:

\setmainfont{texgyrepagella}[
    Path           = /var/www/myProject/Fonts/ ,
    UprightFont    = *-regular ,
    BoldFont       = *-bold ,
... ]

相关内容