Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 1.6在被后台Symfony任务调用时中断_Java_Php_Symfony1_Mamp - Fatal编程技术网

Java 1.6在被后台Symfony任务调用时中断

Java 1.6在被后台Symfony任务调用时中断,java,php,symfony1,mamp,Java,Php,Symfony1,Mamp,我有一个Symfony任务,它生成一些文件,调用exec到jar,然后解析输出。jar可以从命令行正常运行,任务可以从命令行正常运行 问题: 我在基于表单提交的操作中调用该任务。我让动作在后台启动一个新的php进程来运行任务,而不管生成的页面现在做什么 当它到达java调用时,比如exec(java-version);它的输出是: Error occurred during initialization of VM Unable to load native library: libjava.j

我有一个Symfony任务,它生成一些文件,调用exec到jar,然后解析输出。jar可以从命令行正常运行,任务可以从命令行正常运行

问题:

我在基于表单提交的操作中调用该任务。我让动作在后台启动一个新的php进程来运行任务,而不管生成的页面现在做什么

当它到达java调用时,比如exec(java-version);它的输出是:

Error occurred during initialization of VM
Unable to load native library: libjava.jnilib
我觉得这与我启动任务时调用php的方式有关,但我不明白为什么它没有与我使用命令行时相同的库

如何使java从“后台”Symfony任务运行

注释

在我将mamp从1.9.6升级到2.0.3之前,它一直工作顺利

我看过: 但是,由于我可以从命令行很好地运行它,这似乎是一个不同的问题

我也看过,但我不认为权限是这里的问题

更新:

我已经将问题缩小到MAMP,并从浏览器访问php

<?php
echo exec("java -version")
...
所以它看起来像这样:

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
这应该可以解决问题,Java1.6可以正常运行


这是黑客吗?或者这是MAMP中的一个bug?如果您知道解决此问题的更好方法,请回答。

这是@paaat添加的解决方案。我只是想把这个问题从未回答的问题列表中去掉

我已经想出了一个解决办法。这看起来像是一个黑客,但它奏效了。我将 把它贴在这里,以防其他人遇到同样的问题

正如断开的JavaMac10.6提到的,DYLD_库路径必须是未设置的。 不知道为什么,在Unix系统上似乎需要它,但在MacOSX上不需要

如果MAMP设置为/Applications/MAMP/Library/lib,那么以下是如何禁用 它:编辑/Applications/MAMP/Library/bin/envvars并注释掉 以下几行

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
所以它看起来像这样:

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
这应该可以解决问题,Java1.6可以正常运行


请务必重新启动MAMP安装,以使更改生效。

这是有效的!但是,我正在运行的MAMP版本2.1.3在文件中有不同的内容:

#if test "x$DYLD_LIBRARY_PATH" != "x" ; then
#  DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#else
#  DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib"
#fi
#export DYLD_LIBRARY_PATH
这对我很有用:

<?php
  exec('export DYLD_LIBRARY_PATH=""; java -version');
?>

Re:“我已经看了:…”-->检查您的
phpinfo(INFO\u环境)
以检查PHP进程的环境。它可能不同于您用来手动检查是否可以启动Java的命令shell的env。我具体查看的是环境信息的哪一部分?Java可以很好地从命令行中的php调用:
php-r'exec(“Java-version”,$o);回声$o;'回声:
java版本“1.6.0_26”…
当我从php生成php进程时,它无法运行java。我将尝试查看该路径是否不同。我注意到一些奇怪的情况,环境返回PWD作为symfonyroot/web,但getcwd仅返回symfonyroot。不确定这是否重要。您应该添加“已解决”部分作为答案,等待24小时,然后接受您的答案。您不会得到任何代表,但问题将显示为已回答。请在下面发布解决方案,以便我们可以从未回答列表中删除此问题。谢谢,请别走。这意味着问题是重复的,选择最好的一个来发布你的答案,并将其他问题标记为该问题的重复。