Php ffmpeg MAMP“;dyld:库未加载“;错误
我在MAMP的Mac OSX 10.7.3上通过PHP的Php ffmpeg MAMP“;dyld:库未加载“;错误,php,macos,ffmpeg,Php,Macos,Ffmpeg,我在MAMP的Mac OSX 10.7.3上通过PHP的exec()命令使用ffmpeg,我设置了一个调用ffmpeg的绝对路径,例如 /opt/local/bin/ffmpeg -i "/sample.avi" 但是我收到以下错误- dyld: Library not loaded: /opt/local/lib/libjpeg.8.dylib Referenced from: /opt/local/lib/libopenjpeg.1.dylib Reason: Incompatible
exec()
命令使用ffmpeg,我设置了一个调用ffmpeg的绝对路径,例如
/opt/local/bin/ffmpeg -i "/sample.avi"
但是我收到以下错误-
dyld: Library not loaded: /opt/local/lib/libjpeg.8.dylib Referenced from: /opt/local/lib/libopenjpeg.1.dylib Reason: Incompatible library version: libopenjpeg.1.dylib requires version 13.0.0 or later, but libJPEG.dylib provides version 12.0.0
注意:ffmpeg是通过Macports安装的
它在命令行中工作
怎么办
编辑
我重新打开了这个-原本以为shell\u exec()
解决了这个问题,但实际上应该以不同的方式调用它-直到今天进一步调查,我才意识到这一点。下面是我使用shell_exec的代码,但仍然给出了上面的错误:
$cmd = '/opt/local/bin/ffmpeg -h';
$cmd = escapeshellcmd($cmd) . ' 2>&1';
$output = shell_exec($cmd);
var_dump($output);
使用命令行时,确保PHP的
exec
使用与您相同的shell
可能有帮助
另请参见。问题在于,DYLD\u LIBRARY\u路径是在MAMP中设置的,我已经通过macports安装了ffmpeg 这可能不是最好的解决方案,但它让我目前处于运行状态: 在
/Applications/MAMP/Library/bin/envvars
文件中,注释以下行:
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
然后重新启动Apache注释掉行
#DYLD_LIBRARY_PATH=“/Applications/MAMP/LIBRARY/lib:$DYLD_LIBRARY_PATH”
将在短期内起作用,但它可能会破坏其他功能,因为您正在删除MAMP用来告诉服务器其库存放位置的行
更好的解决方案是将行更改为:
DYLD_LIBRARY_PATH="/usr/local/lib:/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
因此,您只需将/usr/local/lib:
预编到已经给定的路径。这告诉Apache先查看/usr/local/lib
,如果不起作用,再查看/Applications/MAMP/Library/lib
因此,如果您通过Brew安装了某些东西,并且有两个版本,那么在使用MAMP附带的内容之前,它将首先查看您随Brew安装的版本,而MAMP很可能已经过时。但是,如果它只是MAMP附带的,您没有单独安装或是特定于MAMP的,您不会破坏它。可能是一个问题,因为ffmpeg是通过macports安装的,而不是在MAMP环境中安装的?我现在添加了这个作为回答,删除其他注释。我的错误:
shell\u exec
返回了null
——直到今天进一步调查,我才注意到。当我正确调用shell\u exec
时,我得到了相同的错误。谢谢你,我接受了-否则exec
和shell\u exec
之间的主要区别是什么,这意味着shell\u exec可以工作,但不能执行?@benedict\u w:我不得不承认,我不知道。我只记得这确实帮助了我一段时间,而且有人这样认为两者都在使用VCWD\u POPEN
看起来这可能不是正确答案-而exec
给出了上面的错误shell\u exec
返回空值。重新打开,直到解决:(我用shell_exec
命令修复了一个单独的问题,现在它给了我与上面相同的错误。检查用户,例如,执行一些shellexec('whoami')
。谢谢。我很难通过macports和mamp让ImageMagic工作。这对我来说很有效,我还必须在我的php脚本putenv(“PATH=“.$\u ENV”)中添加以下行[“PATH”]。:/opt/local/bin”);我早就把所有东西都搬到了macports。最初启动并运行所有东西是一件痛苦的事情,但从长远来看,防止这些琐事是值得的!