【问题标题】:php exec on java jar file output is empty arrayjava jar文件输出上的php exec是空数组
【发布时间】:2014-02-10 02:16:48
【问题描述】:

我得到了一台新的 Mac,并安装了与旧 Mac 相同的 xampp Web 服务器。 一切都很好,除非我调用一个 java 文件:

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

$output 现在是一个空的array()$result = 5

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

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

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

请帮忙!!我在这里浏览了与此问题类似的所有主题,但在互联网上的任何地方都找不到任何东西!国民健康指数

【问题讨论】:

  • 我在运行 exec("/usr/bin/php /path/to/file.php") 时遇到了同样的问题。我得到 5 的结果,但它没有运行。我已经尝试了很多事情,但仍然用头撞墙。还在 macbook air 上使用 XAMPP for PHP 5.3。
  • 好的,xampp 似乎设置了 DYLD_LIBRARY_PATH="/Applications/XAMPP/xamppfiles/lib" 这可能会导致很多问题。还没想好怎么解决。

标签: java php macos xampp


【解决方案1】:

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

祝你好运!

原始答案:
好的,我有一个可行的解决方案,尽管我知道这不是最安全的。

这是怎么回事: DYLD_LIBRARY_PATH 是一个 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

在我将每个库移到一个找不到它的名称后,我重新运行了脚本。它会在另一个库上出错,我会移动它。几次之后,就停了下来。在我的 XAMPP 和 Apache 部署中,一切似乎仍然正常。

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

HTH

【讨论】:

  • 干得好,肯!我希望这对其他人有帮助。我没时间了,只是报废了 xampp 并学习了如何在 mac 上从头开始构建 Web 服务器。花了几个小时,但效果很好,没有腹胀!
  • 是的,我认为放弃 xampp 可能是更好的解决方案
  • 我在调用 exec 之前运行了这个答案。 stackoverflow.com/questions/24941078/…
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多