dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib with anything php related

Using any php application results in:

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

Most of my php applications were installed using homebrew with the exception of composer (installed using curl)

I tried removing the the libpng and reinstalling with homebrew to no avail.

Next was to switch to latest version of libpng 1.5 as stated in the error message:

$ 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

Now the error has changed to:

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

Im running Mavericks (10.9.2) and PHP 5.5.1.

Thanks in advance!

119070 次浏览

我建议你快跑:

$ brew update && brew upgrade

直到几分钟前,我也有这个问题。因为我有一个最新的 PHP 版本,所以我用:

$ brew reinstall php55

希望能帮上忙。

我遵循了上面的建议(不管怎样,跟上酿酒的步伐是个不错的主意) ,但仍然有同样的问题:

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

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

Search for your libpng version(s) on your box:

# 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

我把它复制到丢失的目录中解决了这个问题:

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

Brewreinstall libpng 继续安装 libpng16,而不是 libpng15,所以我被迫做以上。

我知道这个问题已经有了答案。但我想给你我的意见,以帮助人们了解这个问题。得到同样的问题,我已经创建了 a specific question。我也有同样的问题,但只是 PHPStorm 的问题。并且正是当我试图从编辑器运行 test 时。

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。PHPStorm 使用默认配置/usr/bin/php。当我通过控制台运行 php 时,我运行/urs/local/bin/php。

So, ... If you get some dyld error, maybe you have some wrong php configuration. That's the reason because

$ brew update && brew upgrade
$ brew reinstall php55

But I dont know why this do not solve the problem to me. Maybe because I have

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

brew unlink libpng && brew link libpng

你可能会得到一些错误。我通过更正许可修正了那个错误。也许是因为没有安装 macport。

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

再次创建链接,它就会工作。

为了防止其他人碰到这个问题,我用以下方法解决了它

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的包会更好,但这只是一个快速的绷带修复。

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

更新.bash _ profile 中的路径修复了我的问题。

我也有这个问题,这个帖子中没有一个解决方案对我有用。事实证明,问题在于我在 ~/.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

And then everything worked as normal!

在我的情况是 libjpeg。所有我必须做的是运行 brew reinstall libjpeg和一切只是工作!

我有一个错误,brew update && brew upgrade没有解决。出于某种原因,我需要从头开始安装它:

$ brew install libpng

对于这个错误,我经历了非常艰难的时期:

原因: 不兼容库版本: php 需要44.0.0或更高版本,但 libpng16.16. dylib 提供 version 42.0.0 Trace/BPT trap: 6

我做了上述所有的事情与酿造和更多... 但它不是这个!

检查你的图书馆在哪里:

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 用户,所以在我尝试从 PHP7.1.0更新到7.1.8(last MAMP php available)时出现了错误,因为 Symfony4至少需要7.1.3

最后,我安装了新版本的 MAMP,它工作(4.1到4.2)。 However be carreful when you're doing this, you need to backup first everything in your MAMP/htdoc folder. Also keep a backup of your custom compiled php version than can live in MAMP/bin/php. (In my case I had a special PHP version with Oracle drivers).

另外,如果将 MAMP php 版本配置为 CLI php 解释器,则需要更新。Bash _ profile

It should look something like this :

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

希望这个能帮上忙。