java - 调用 .jar 文件在 php shell_exec linux 中不起作用,但在 cmd 和 windows 中有效

标签 java php linux shell imagej

我正在编写一个脚本,该脚本调用 Imagej java 应用程序来处理由 PHP 网页上传的图像。 当 PHP shell_exec 命令调用应用程序时会出现问题。 该结构在 Windows 中进行了测试并且工作正常。 然而,当试图在 linux 中实现时,shell_exec 会停止 php 脚本并永远保持加载状态。在同一个 shell_exec “java -version” 中有效,但调用 jar 无效。 shell_exec 命令是:

java -Xmx512m -Dplugins.dir="/var/www/ImageJ/" -jar "/var/www/ImageJ/ij.jar" -batch "/var/www/ImageJ/macros/[macrofile]" [imagefile.jpeg]

但是,当我尝试从控制台在 php 中运行时,它会运行。

php > shell_exec("java -Xmx512m -Dplugins.dir=\"/var/www/ImageJ/\" -jar \"/var/www/ImageJ/ij.jar\" -batch \"/var/www/ImageJ/macros/melaTest.ijm\" F15274739305711.jpeg");

会不会是php.ini或用户的问题?

最佳答案

问题已解决。 该问题与 ImageJ 的 GUI 特性有关,因此该应用程序需要从 shell_exec 运行虚拟屏幕。
为了解决这个问题,安装了 Xvfb (sudo apt install xvfb) 并从命令“xvfb-run”调用了 php shell_exec 中的命令以在虚拟服务器中执行。

 xvfb-run -a -s "-screen 0 1024x768x24" java -Xmx512m -Dplugins.dir="/var/www/ImageJ/" -jar "/var/www/ImageJ/ij.jar" -batch "/var/www/ImageJ/macros/[macro...] [arg]

关于java - 调用 .jar 文件在 php shell_exec linux 中不起作用,但在 cmd 和 windows 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50575019/

相关文章:

php - Mysql,根据日期选择行

php - PHP move_uploaded_file不起作用,但未生成任何错误

Python 套接字连接在 Ubuntu 16.04 上每 9 个连接延迟一秒

linux - 检测Linux中最大的分区

java - 将一组 map 流式传输到单个 map 中

java - 录音并 POST 到服务器

java - PutExtra如何管理上传发送的数据

java - 如何为通过 gradle 构建变体生成的两个版本的 GPS 应用程序获取不同的图标?

javascript - 将变量传递到 Bootstrap 模态中

linux - userfaultfd 现在是否支持文件备份映射?