php执行shell命令,dyld:库未加载:/usr/lib/libxml2.2.dylib

Posted

技术标签:

【中文标题】php执行shell命令,dyld:库未加载:/usr/lib/libxml2.2.dylib【英文标题】:php execute shell commands, dyld: Library not loaded: /usr/lib/libxml2.2.dylib 【发布时间】:2011-09-16 14:47:00 【问题描述】:

我正在尝试使用 wkhtmltopdf 可执行文件将一些 html 转换为 pdf。我只是在我的 mac 上测试它,如果我通过终端运行可执行文件,它工作正常。如果我使用 php shell_exec 运行它,我会收到以下错误:

dyld:库未加载: /usr/lib/libxml2.2.dylib 引用 从: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices 原因:库版本不兼容: DictionaryServices 需要版本 10.0.0 或更高版本,但 libxml2.2.dylib 提供版本 9.0.0

如果我通过 php 吐出我正在使用的 cmd,我可以运行它并且它在终端中运行良好。

我认为这是一个路径问题,所以我回显了我的用户路径,它与 php 可用的路径不同,所以我之前将它添加到命令中:

PATH=$PATH:/usr/local/sbin:/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/opt/subversion/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin; ./wkhtmltopdf-0.9.9-OS-X.i368 ./'newxhtml.html' /tmp_pdf.pdf

有什么想法我可能做错了吗?

谢谢,女士

【问题讨论】:

【参考方案1】:

弄清楚发生了什么。

首先解决问题,我运行了命令:

环境

来自我的终端和我的 php 脚本。

我注意到在我的 php 脚本中明确设置了以下内容:

DYLD_LIBRARY_PATH=/一些/路径

但在终端中根本没有设置该值。所以我所做的只是添加:

DYLD_LIBRARY_PATH="";

这是我的最终命令: DYLD_LIBRARY_PATH="";./wkhtmltopdf-0.9.9-OS-X.i368 ./'newxhtml.html' ./tmp_pdf.pdf 2>&1

我只是通过 shell_exec 运行它。

【讨论】:

以上是关于php执行shell命令,dyld:库未加载:/usr/lib/libxml2.2.dylib的主要内容,如果未能解决你的问题,请参考以下文章

php -v 返回 dyld:库未加载:/usr/local/opt/readline/lib/libreadline.7.dylib

dyld:库未加载:/usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib、php-fpm、php5.6

Homebrew 不会运行 wget 命令(库未加载)

dyld:库未加载:/usr/local/opt/tidy-html5/lib/libtidy.5.dylib

libmpc - dyld:库未加载 - 原因:找不到图像

dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误