php exec上的java jar文件输出是空数组

时间:2014-01-20 19:00:06

标签: java php macos xampp

我有一个新的mac并安装了与旧的相同的xampp web服务器。 一切都很好,除非我调用java文件:

$str_exec = "java  -jar HelloWorld.jar";
exec($str_exec, $output,$result);

$output现在为空array()$result = 5

我已尝试过绝对路径,对所有内容的权限,更改https.conf中的用户和组(以前我都不需要这样做!)

我发誓什么都没有改变,除了我现在使用的是macbook pro而不是空气。这些文件始终与我们的主服务器文件相匹配。出现在错误日志中的唯一内容是:

dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /Applications/XAMPP/xamppfiles/lib/libJPEG.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO

请帮助!!我在这里已经完成了与此问题类似的所有主题,并且无法在互联网上找到任何内容! GNH

1 个答案:

答案 0 :(得分:3)

修改
不要使用下面的解决方案。正如预期的那样,它最终会破裂。当我试图启动apache服务器时,我终于破了,抛出了dyld错误。它根本不会开始。不知道为什么它之前有效,现在没有,但没关系。只需放弃XAMPP,并按照这些说明启动自己的堆栈:http://jason.pureconcepts.net/2012/10/install-apache-php-mysql-mac-os-x/

祝你好运!

原文回答:
好吧,我有一个可行的解决方案,虽然我知道它不是最安全的远射。

这是什么了: DYLD_LIBRARY_PATH是一个var,用于修改动态链接库查找lib的方式。显然,许多开发人员认为您的软件不应该使用此var。 XAMPP做到了。

根据一个解决方案,您可以简单地编辑包含此文件的行。 (http://www.pdflib.com/fileadmin/pdflib/pdf/support/PDFlib-in-PHP-HowTo.pdf)。 使用编辑器打开xamppfiles/bin/envvars,然后删除设置和导出DYLD_LIBRARY_PATH的行。然后重启apache。

然而,这对我不起作用。我也在名为xamppfiles/bin/envvars-std的文件中尝试了相同的操作。仍然没有奏效。不过可能值得一试。

问题是XAMPP库与mac osx库冲突。所以我只是(有效地)删除了XAMPP库。当然这打破了另一个库,但我继续删除(希望是多余的)XAMPP库,直到它工作。这就是我必须做的事情:

XAMPP/xamppfiles/lib% sudo mv libjpeg.dylib _changed_libjpeg.dylib XAMPP/xamppfiles/lib% sudo mv libtiff.dylib _changed_libtiff.dylib XAMPP/xamppfiles/lib% sudo mv libpng.dylib _changed_libpng.dylib XAMPP/xamppfiles/lib% sudo mv libiconv.2.dylib _changed_libiconv.2.dylib XAMPP/xamppfiles/lib% sudo mv libexslt.0.dylib _changed_libexslt.0.dylib XAMPP/xamppfiles/lib% sudo mv libxml2.2.dylib _changed_libxml2.2.dylib XAMPP/xamppfiles/lib% sudo mv libxslt.1.dylib _changed_libxslt.1.dylib

在我将每个库移动到无法找到它的名称后,我重新编写了该脚本。它会在另一个lib上出错,我会移动它。经过其中一些,它停了下来。在我的XAMPP和Apache部署中,一切似乎都运行良好。

更重要的是,我现在可以成功运行exec("/usr/bin/php -v");

HTH