【问题标题】:Invoking .jar file doesn't work in php shell_exec linux but it works in cmd and windows调用 .jar 文件在 php shell_exec linux 中不起作用,但在 cmd 和 windows 中起作用
【发布时间】:2018-11-07 13:23:25
【问题描述】:

我正在编写一个脚本,该脚本调用 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或者用户的问题?

【问题讨论】:

  • 在 linux 命令提示符下测试过? 'java' 在本地路径中吗?
  • php 用户用户对那些文件\目录有读权限\写权限?
  • imagej 文件夹位于 /var/www/ (apache2) 中,上面的命令在 LXTerminal 中运行良好。 Java 在 /usr/lib/jvm/java-11-openjdk-i386/bin 中。
  • 但是,当我尝试从控制台运行 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 或者用户的问题?

标签: java php linux shell imagej


【解决方案1】:

问题已解决。 该问题与 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]

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2013-05-26
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多