无法通过system()执行外部程序?

时间:2012-03-19 07:04:45

标签: php system external

我尝试在php脚本中编译我的latex文件,但它无法调用xelatex

在php脚本中:

system("/usr/bin/whoami");
system("/usr/bin/xelatex foo.tex 2>&1");

输出:

myuser
sh: 1: /usr/bin/xelatex: not found

但在我的终端:

$ /usr/bin/whoami
=> myuser
$ /usr/bin/xelatex foo.tex
This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX Live 2009/Debian)
...(successful output)...

我将php作为myuser运行,并传递system()绝对路径。然后我关掉safe_mode。为什么我还不能执行外部程序?

3 个答案:

答案 0 :(得分:1)

最后,我联系了我的系统管理员,发现了问题。该计算机位于NFS中,因此apache和登录shell位于不同的计算机上。运行apache的计算机上没有xelatex

答案 1 :(得分:0)

检查运行PHP代码的目录的权限。检查myuser权限

只是为了验证,请尝试使用root。

希望这个帮助

答案 2 :(得分:0)

你确定它不是找不到的'foo.tex'文件吗?尝试将shell输出到文件,例如system("/usr/bin/xelatex ./foo.tex > ./test.out");然后看看你得到了什么运气。