我有一个Symfony任务,它会生成一些调用exec的文件,然后解析输出。该jar可以在命令行中正常运行,该任务可以在命令行中正常运行。Java 1.6当被后台调用时被破坏Symfony任务
问题:
我调用任务的基础上表单提交的动作。我有动作在后台启动一个新的php进程来运行任务,而不管它现在产生的页面是什么。
当它到达java调用时,说exec(java -version);它输出这样的:
Error occurred during initialization of VM
Unable to load native library: libjava.jnilib
我觉得它有,当我开始任务与我称之为PHP的方式做,但我迷路了,为什么它不会有相同的库,当我使用命令行。
如何让java从'背景'Symfony任务运行?
注意:
它使用,直到我upraded甲基苯丙胺从1.9.6到2.0.3没有顺利工作。
我看了看: Broken Java Mac 10.6 但由于我可以从命令行运行它很好,它似乎是一个不同的问题。
我也看过Execute symfony task command from the shell_exec() permission denied但我不认为权限是这里的问题。
更新:
我已经缩小的问题MAMP并得到从浏览器到PHP。
<?php
echo exec("java -version")
...
从命令行调用时会起作用,但当通过浏览器打开php文件时不起作用。所以配置MAMP的方式导致了这个问题。
这里的环境信息:
- 变量值
- SHELL /斌/庆典
- TMPDIR的/ var /文件夹/ YH/YH + uW3hDHZyxQ5AiUtr0T ++++ TI/-Tmp-/
- Apple_PubSub_Socket_Render的/ tmp /发射-3rr9ZI /渲染
- 用户myuser的
- COMMAND_MODE unix2003
- SSH_AUTH_SOCK/TMP /发射-zinaMI /听众
- __CF_USER_TEXT_ENCODING 0x1F5:0:0
- 路径/ usr /斌:/ bin中:/ usr/sbin目录:/ sbin目录
- PWD/
- HOME /用户/ myuser的
- SHLVL 2
- DYLD_LIBRARY_PATH /应用/甲基苯丙胺/库/ lib目录下:
- LOGNAME myuser的
- 显示/tmp/launch-FYrw70/org.x:0
- _/Applications/MAMP/Library/bin/httpd
Dyld似乎出现在这里。我需要找到一种方法来解除麻烦的环境。
解决
,我想出了一个解决方案。它看起来像一个黑客,但它的工作。我会在这里发布它,以防其他人遇到同样的问题。
由于Broken Java Mac 10.6提到DYLD_LIBRARY_PATH必须未设置。不知道为什么,它似乎需要在Unix系统上,而不是MacOSX上。
如果MAMP设置为/应用/甲基苯丙胺/库/ lib目录下面介绍如何禁用它: 编辑/应用/甲基苯丙胺/库/斌/ 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
这应该解决这个问题,Java 1.6可以正常运行。
这是破解?或者这是MAMP中的一个错误?如果您知道解决此问题的更好方法,请回答。
回复:“我看过:[破碎的Java Mac 10.6](http://stackoverflow.com/questions/1482450/broken-java-mac-10-6)...” - >检查你的'phpinfo(INFO_ENVIRONMENT)'检查环境你的PHP过程。它可能与您用来手动检查是否可以启动Java的命令shell的环境不同。 – Barend
我在具体查看环境信息的哪一部分?Java在命令行中可以很好地从php中调用:'php -r'exec(“java -version”,$ o); echo $ o;''echoes:'java version“1.6.0_26”...'这是我从PHP衍生出的PHP进程,它无法运行java。我会试着去看看这条路是不一样的。 – paaat
我注意到一些奇怪的事情,environement将PWD作为symfonyroot/web返回,但getcwd只返回symfonyroot。不知道这是否意义重大。 – paaat