dyld:库未加载:/usr/local/lib/libpng16.16.dylib与任何php相关

时间:2014-03-25 10:00:02

标签: php osx-mavericks libpng dyld

使用任何php应用程序都会导致:

dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
[1]    4494 trace trap  php

我的大部分php应用程序都是使用自制程序安装的,但作曲家除外(使用curl安装)

我尝试删除libpng并用homebrew重新安装无效。

接下来是切换到错误消息中所述的最新版本的libpng 1.5:

$ brew info libpng
libpng: stable 1.6.10 (bottled) 
http://www.libpng.org/pub/png/libpng.html
/usr/local/Cellar/libpng/1.5.17 (15 files, 1.0M)
Poured from bottle
/usr/local/Cellar/libpng/1.5.18 (15 files, 1.0M)
Poured from bottle
/usr/local/Cellar/libpng/1.6.10 (17 files, 1.3M) *

$ brew switch libpng 1.5.18
Cleaning /usr/local/Cellar/libpng/1.5.17
Cleaning /usr/local/Cellar/libpng/1.5.18
Cleaning /usr/local/Cellar/libpng/1.6.10
16 links created for /usr/local/Cellar/libpng/1.5.18

现在错误已更改为:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib
Referenced from: /usr/local/lib/libfreetype.6.dylib
Reason: image not found
[1]    6993 trace trap  phpunit

我正在运行Mavericks(10.9.2)和PHP 5.5.1。

提前致谢!

11 个答案:

答案 0 :(得分:151)

我建议你跑:

$ brew update && brew upgrade

直到几分钟前我也遇到了这个问题。因为我有一个最新的PHP版本,我解决了它:

$ brew reinstall php55

希望有所帮助。

答案 1 :(得分:42)

我按照上面的说法(无论如何都能跟上brew一直是个坏主意)并且仍然有同样的问题:

LAPTOP:folder Username$ php -v
dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found
Trace/BPT trap: 5

然后想出一个更简单的方法:

在你的盒子上搜索你的libpng版本:

# Requires locate & updatedb for mac os x
# See Link [1] 
LAPTOP:folder Username$ locate libpng15.15.dylib
/Applications/GIMP.app/Contents/Resources/lib/libpng15.15.dylib
/usr/X11/lib/libpng15.15.dylib
/usr/local/Cellar/libpng/1.5.14/lib/libpng15.15.dylib

制作符号链接:

LAPTOP:folder Username$ ln -s /usr/local/Cellar/libpng/1.5.14/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib

再试一次:

LAPTOP:folder Username$ php -v
PHP 5.3.26 (cli) (built: Aug 25 2013 16:07:23) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

1)Mac OS X equivalent of locate

答案 2 :(得分:18)

这是因为libpng没有符号链接。你需要再次链接libpng。

brew unlink libpng && brew link libpng

你可能会遇到一些错误。我通过更正权限修复了该错误。也许是因为卸载了macports。

sudo chown -R yourid:staff /usr/local/share/man/

再次创建链接,它可以正常工作。

答案 3 :(得分:11)

我通过将其复制到丢失的目录来解决这个问题:

cp /opt/X11/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib

brew重新安装libpng继续安装libpng16,而不是libpng15所以我被迫做了以上操作。

答案 4 :(得分:8)

就我而言,它是libjpeg。我所要做的只是运行brew reinstall libjpeg,一切正常!

答案 5 :(得分:4)

以防其他人遇到此问题我通过以下

解决了这个问题
brew update && brew upgrade # installs libpng 1.6

这导致其他需要1.5的软件包出错,因此我将其链接起来:

cd /usr/local/lib/
ln -s ../Cellar/libpng/1.5.18/lib/libpng15.15.dylib

现在,他们和谐地生活在一起,为不同的包装并排。重建依赖于1.5的软件包会更好,但这可以作为快速的绷带修复。

答案 6 :(得分:3)

我知道这个问题已经有了解决方案。但是我想给你两分钱来帮助人们理解这个问题。得到同样的问题我创建了a specific question。我遇到了同样的问题,但只有PHPStorm。当我尝试从编辑器运行测试时。

dyld是动态链接器

我播种dyld正在寻找/usr/local/lib/libpng15.15.dylib,但在我的/ usr / local / lib /里面却没有。在那个文件夹中,我得到了libpng16.16.dylib。

感谢评论,我发现我的/ usr / bin / php是指向php 5.5.8的指针。相反,... / usr / local / bin / php是5.5.14。 PHPStorm使用默认配置的/ usr / bin / php。当我通过控制台运行php时,我运行/ urs / local / bin / php。

所以,...如果你得到一些dyld错误,也许你有一些错误的PHP配置。这是因为

$ brew update && brew upgrade
$ brew reinstall php55

但我不知道为什么这不能解决问题。也许是因为我有

答案 7 :(得分:1)

我也有这个问题,这个帖子中没有一个解决方案适合我。事实证明,问题是我在~/.bash_profile中有这一行:

alias php="/usr/local/php/bin/php"

事实证明,/usr/local/php只是/usr/local/Cellar/php54/5.4.24/的符号链接。所以当我调用php -i时,我仍在调用php54。我刚从我的bash配置文件中删除了这一行,然后php工作了。

出于某种原因,即使php55正在运行,php54的php.ini文件仍然被加载,每次调用php时都会收到此警告:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php54/5.4.38/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - dlopen(/usr/local/Cellar/php54/5.4.38/lib/php/extensions/no-debug-non-zts-20100525/memcached.so, 9): image not found in Unknown on line 0

要解决此问题,我只是将以下行添加到我的bash配置文件中:

export PHPRC=/usr/local/etc/php/5.5/php.ini

然后一切正常!

答案 8 :(得分:1)

我遇到了$ brew install libpng未解决的错误。出于某种原因,我需要从头开始安装它:

file_1: Apples: 5 items in stock Pears: 10 items in stock Bananas: 15 items in stock file_2: Watermelon: 20 items in stock Oranges: 30 items in stock Pears: 25 items in stock

答案 9 :(得分:1)

我很难遇到这个错误:

  

原因:不兼容的库版本:php   需要44.0.0或更高版本,但libpng16.16.dylib提供   版本42.0.0跟踪/ BPT陷阱:6

我用brew酿造了所有上述东西......还有更多......但不是这个!

检查您的图书馆在哪里:

  

sudo find / -name libpng16.16.dylib

就我而言,这是相关的结果:

  • /usr/local/lib/libpng16.16.dylib
  • /usr/local/Cellar/libpng/1.6.34/lib/libpng16.16.dylib
  • /Applications/MAMP/Library/lib/libpng16.16.dylib
  • /opt/X11/lib/libpng16.16.dylib

因此我和MAMP用户一样,当我尝试从PHP 7.1.0更新到7.1.8(last MAMP php available)时出现错误,因为Symfony4需要至少7.1.3 < / p>

最后,我安装了新版本的MAMP,并且工作正常(4.1到4.2)。 但是,当您执行此操作时,您需要先备份MAMP / htdoc文件夹中的所有内容。还保留自定义编译的php版本的备份,而不是可以存在于MAMP / bin / php中。 (就我而言,我有一个特殊的PHP版本,带有Oracle驱动程序)。

此外,如果您将MAMP php版本配置为CLI php解释器,则需要更新.bash_profile中的PATH

看起来应该是这样的:

  

export PATH = / Applications / MAMP / bin / php / php7.1.8 / bin:$ PATH

我希望这可以提供帮助。

答案 10 :(得分:0)

我在更新MAMP之后遇到了这个问题,并且我设置的自定义$ PATH因为新的php版本而错误,所以首先加载了错误版本的php,并且是那个版本的php触发了错误。

更新.bash_profile中的路径修复了我的问题。