Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ffmpeg MAMP“;dyld:库未加载“;错误_Php_Macos_Ffmpeg - Fatal编程技术网

Php ffmpeg MAMP“;dyld:库未加载“;错误

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

我在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 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。最初启动并运行所有东西是一件痛苦的事情,但从长远来看,防止这些琐事是值得的!