dyld:库未加载:/usr/local/lib/libpng16.16.dylib与任何与PHP相关的信息


119

使用任何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应用程序都是使用homebrew安装的,但composer除外(使用curl安装)

我尝试删除libpng并使用自制软件重新安装均无济于事。

接下来是按照错误消息中的说明切换到最新版本的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。

提前致谢!

Answers:


156

我建议您运行:

$ brew update && brew upgrade

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

$ brew reinstall php55

希望有帮助。


谢谢,我完全卸载并重新安装了homebrew,但回想起来,我认为这是一个更好的选择。
user3458861 2014年

我在另一个程序(宽限期)上遇到了相同的问题,并且此问题得以解决。
mstringer 2014年

1
可能有帮助:ImageMagick可能是造成这种情况的元凶。ImageMagick消除了要分散的/ usr / local / bin / compare时,我遇到了类似的问题。
phpguru

我不必做$ brew升级-但是$ brew更新和$ brew重新安装php53对我有用。
Thomas Bennett 2014年

警告:升级将更新您所有(过时的)公式,可能需要一段时间!
laffuste

42

我遵循了上面的内容(无论如何始终保持最新状态绝不是一个坏主意),但仍然存在相同的确切问题:

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等效于locate


8
顺便说一句,mdfind libpng15.15.dylib不需要定位hack
Jure C.14年

感谢@JureC。,我不知道mdfind。您也可以使用sudo find / -name libpng15 -print,但是输出是有点冗长的。
phpguru

这是唯一对我
有用的方法

这也为我工作。我遇到的问题是libpng15现在是旧版本,因此无法修复更新。
bigtunacan

1
这是唯一对我有用的解决方案!谢谢!
JLuiz 2014年

18

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

brew unlink libpng && brew link libpng

而且您可能会得到一些错误。我通过更正权限解决了该错误。也许是由于卸载了Macports。

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

再次创建链接,它将起作用。


在El Capitan上,使用homebrew-php,这最终成了我的解决方案。除了上面的链接,我还必须运行brew link unixodbc。但是我的系统拥有该特定程序包的所有权。
justinpage

11

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

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

brew reinstall libpng会继续安装libpng16,而不是libpng15,因此我被迫执行上述操作。


运行Brew Doctor时,这将导致其他问题。 Warning: Unbrewed dylibs were found in /usr/local/lib. If you didn't put them there on purpose they could cause problems when building Homebrew formulae, and may need to be deleted. Unexpected dylibs: /usr/local/lib/libpng15.15.dylib
johnatasjmo '16

8

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


2
就我而言libpngbrew reinstall libpng解决了它
user34812

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的软件包,但这可以作为快速的绷带修复程序。


3

我知道这个问题已经给出了解决方案。但是我想给你我的两分钱,以帮助人们理解这个问题。遇到同样的问题,我创建了一个特定的问题。我遇到了同样的问题,但仅限于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

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


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起作用了。

由于某些原因,即使现在正在运行php.iniphp55,仍然会加载来自php54 的文件,并且每次调用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

然后一切正常。


1

我遇到了无法解决的错误brew update && brew upgrade。由于某些原因,我需要从头开始安装它:

$ brew install libpng


1

我很难遇到这个错误:

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

我用brew做以上所有这些事情,但是还不止这些!

检查您的图书馆在哪里:

须藤查找/ -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(最新的MAMP php可用)时出现错误,因为Symfony4至少需要7.1.3

最后,我安装了新版本的MAMP并成功运行(4.1到4.2)。但是,在执行此操作时要格外小心,您需要首先备份MAMP / htdoc文件夹中的所有内容。此外,还应保留自定义的已编译php版本的备份,使其比MAMP / bin / php中的版本还要好。(就我而言,我有一个带有Oracle驱动程序的特殊PHP版本)。

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

它应该看起来像这样:

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

希望对您有所帮助。


0

更新MAMP后,我遇到了这个问题,由于新的php版本,我设置的自定义$ PATH错误,因此首先加载了错误的php版本,而该版本的php触发了错误。

更新.bash_profile中的路径解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.