PHP exec和蜡染光栅化器

PHP exec和蜡染光栅化器,php,exec,batik,Php,Exec,Batik,我正在使用蜡染将SVG图像转换为PDF。当通过终端转换它们时,一切正常,文件被转换。但是,我想要的是使用exec()从PHP动态转换它 这是我从终端转换时看到的: About to convert 1 SVG file(s) Converting output.svg to /opt/lampp/htdocs/tool/generated/output.pdf... ... success 使用exec()时,输出仅限于“转换output.svg…”。。。没有成功的部分。服务器似乎不会等待

我正在使用蜡染将SVG图像转换为PDF。当通过终端转换它们时,一切正常,文件被转换。但是,我想要的是使用exec()从PHP动态转换它

这是我从终端转换时看到的:

About to convert 1 SVG file(s)

Converting output.svg to /opt/lampp/htdocs/tool/generated/output.pdf...

... success
使用exec()时,输出仅限于“转换output.svg…”。。。没有成功的部分。服务器似乎不会等待脚本完成。另外,生成的PDF文件是完全空的

这是PHP中的调用:

$command='cd~/Downloads/batik-1.7&&java-jar batik-rasterizer.jar/opt/lampp/htdocs/tool/generated/output.svg-m“application/pdf”

$string=exec($command)

这是我在js控制台中看到的:

Design另存为generated/output.svgConverting output.svg到/opt/lampp/htdocs/tool/generated/output.pdf…

编辑:

使用stderr,我得到:

未指定协议
线程“main”java.lang.InternalError中出现异常:无法使用“:0.0”作为显示变量的值连接到X11窗口服务器。

编辑2:

通过谷歌搜索,我找到了解决方案:

-Djava.awt.headless=true
:)


谢谢大家指导我找到答案

了解标准流stdout和stderr。

您能给我们看一些调用代码吗?到目前为止您都尝试了什么?我会使用cmd>/tmp/stdout.txt 2>/tmp/stderr.txt来查看哪个是哪个。然后,我将仔细查看哪个uid正在执行命令,然后尝试在终端中复制错误java.lang.InternalError:无法使用“:0.0”作为显示变量的值连接到X11窗口服务器。
我在线程“main”中获得了
未指定协议的异常java.lang.InternalError:无法使用“:0.0”作为显示变量的值连接到X11窗口服务器。
从stderrSeems可以看出,在没有X服务器的情况下运行时出现问题,这很奇怪。
echo '{"success": true, "message": "Design saved as generated/output.svg' . $string . '"}';`