我使用Batik将SVG图像转换为PDF。当通过终端转换它们时,每个都很好,并且文件被转换。不过,我想要的是使用exec()从PHP动态地转换它。PHP exec和Batik光栅化器
这是我所看到的,当我从终端转换:
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);
echo '{"success": true, "message": "Design saved as generated/output.svg' . $string . '"}';`
这是我在JS控制台中看到:
Design saved as generated/output.svgConverting output.svg to /opt/lampp/htdocs/tool/generated/output.pdf ...
编辑:
使用标准错误我:
No protocol specified Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
编辑2:
一些谷歌上搜索,我发现后,将溶液:
-Djava.awt.headless=true
:)
感谢所有为指导我在找到答案!
您能向我们展示一些电话代码吗? – 2011-04-12 07:36:53
编辑了这个问题。 – 2011-04-12 07:39:26
你到目前为止尝试过什么?我会执行cmd> /tmp/stdout.txt 2> /tmp/stderr.txt来查看哪个是哪个。然后我会仔细看看哪些uid正在执行命令,然后尝试在终端中复制错误。 – 2011-04-12 08:05:30