我正在尝试使用 Batik 光栅化库将 SVG 到 .png 转换添加到我的 Yii 应用程序中。目前,我在运行 OSX 10.6.7、PHP 5.3.4 和 Java 1.6.0_24 的 Mac 上本地工作。
当我运行处理转换的 PHP 脚本时,使用...
$output = shell_exec(java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg)
Batik 因(无用)错误而失败:
About to transcode 1 SVG file(s)
Converting file.svg to pdf_temp/file.png ... file_1310581599.png
Error while converting SVG
然而,使用...
java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg
...在终端中处理并将 .png 文件与其原始 .svg 一起保存在 /pdf_temp/ 目录中
那么当终端正常时导致 Batik 失败的 PHP/apache 环境有什么不同呢?
编辑:
在与一些同事聊天后,我们认为这可能是因为 Java 需要以 root 身份运行 - 它是从终端而不是在 Web 服务器中运行的。
添加...
2>&1 1> /dev/null
我的 Batik shell_exec() 命令显示以下错误:
Exception in thread "main" java.lang.InternalError: Can't connect to window server - not enough permissions.
关于如何在 Web 服务器环境中以 root 身份运行 Java 的任何想法?还是让它执行我需要的功能?