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

时间:2011-06-16 18:02:49

标签: php wkhtmltopdf shell-exec

我正在尝试使用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

对我可能做错了什么的想法?

谢谢,MS

1 个答案:

答案 0 :(得分:0)

弄清楚发生了什么。

首先出问题我跑了命令:

的env

从我的终端和我的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运行它。