我有一个Symfony任务,生成一些文件调用exec到jar,然后解析输出.jar从命令行运行正常,任务从命令行运行正常.
问题:
我在基于表单提交的操作中调用该任务.我有动作在后台启动一个新的php进程来运行任务,无论它现在生成的页面是什么.
当它进入java调用时,比如说exec(java -version); 它输出这个:
Error occurred during initialization of VM
Unable to load native library: libjava.jnilib
Run Code Online (Sandbox Code Playgroud)
我觉得它与我在启动任务时调用php的方式有关,但我很遗憾为什么它不会像我使用命令行时那样拥有相同的库.
如何从"后台"Symfony任务中运行java?
备注:
它曾经毫无障碍地工作,直到我将mamp从1.9.6升级到2.0.3.
我看过: 破解Java Mac 10.6 但是因为我可以从命令行运行它,这似乎是一个不同的问题.
我还看了shell_exec()权限被拒绝的执行symfony任务命令,但我不认为权限是这里的问题.
更新:
我已经将问题缩小到MAMP并从浏览器转到php.
<?php
echo exec("java -version")
...
Run Code Online (Sandbox Code Playgroud)
从命令行调用时工作,但通过浏览器打开php文件时不工作.因此配置MAMP的方式导致了问题.
这是环境信息:
Dyld似乎出现在这里.我需要找到一种方法来摆脱mamp的环境.
解决了
我找到了解决方案.这似乎是一个黑客,但它的工作原理.我会在这里发布它只是因为其他人遇到同样的问题.
正如Broken Java Mac 10.6所述,必须取消设置DYLD_LIBRARY_PATH.不知道为什么,它似乎需要在Unix系统上,而不是MacOSX.
如果MAMP设置为/ …