dyld: Thư viện không được tải: /usr/local/lib/libpng16.16.dylib với bất kỳ thứ gì liên quan đến php


119

Sử dụng bất kỳ ứng dụng php nào dẫn đến:

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

Hầu hết các ứng dụng php của tôi đã được cài đặt bằng homebrew ngoại trừ composer (được cài đặt bằng curl)

Tôi đã thử gỡ bỏ libpng và cài đặt lại bằng homebrew nhưng không có kết quả.

Tiếp theo là chuyển sang phiên bản mới nhất của libpng 1.5 như đã nêu trong thông báo lỗi:

$ 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

Bây giờ lỗi đã chuyển thành:

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

Tôi đang chạy Mavericks (10.9.2) và PHP 5.5.1.

Cảm ơn trước!

Câu trả lời:


156

Tôi đề nghị bạn chạy:

$ brew update && brew upgrade

Cho đến vài phút trước, tôi cũng gặp vấn đề này. Bởi vì tôi có một phiên bản PHP cập nhật, tôi đã giải quyết nó bằng:

$ brew reinstall php55

Hy vọng rằng sẽ giúp.


Cảm ơn bạn, tôi đã gỡ cài đặt và cài đặt lại homebrew hoàn toàn nhưng xem xét lại, tôi nghĩ đây sẽ là một lựa chọn tốt hơn.
user3458861

Tôi đã gặp vấn đề tương tự với một chương trình khác (ân hạn) và điều này đã khắc phục được.
mstringer

1
Có thể hữu ích: Có thể ImageMagick là thủ phạm gây ra điều này. Tôi đã gặp sự cố tương tự với ImageMagick obliterating / usr / local / bin / so sánh mà tôi đã phải giải quyết vấn đề khác.
phpguru

Tôi không phải thực hiện nâng cấp $ brew - nhưng cập nhật $ brew và $ brew cài đặt lại php53 đã làm việc cho tôi.
Thomas Bennett

Cảnh báo: nâng cấp sẽ cập nhật tất cả các công thức (lỗi thời) của bạn và có thể mất một lúc!
laffuste

42

Tôi đã làm theo những điều trên (dù sao cũng không bao giờ là một ý tưởng tồi khi luôn cập nhật về bia) và vẫn gặp vấn đề chính xác tương tự:

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

Sau đó, tìm ra một cách đơn giản hơn:

Tìm kiếm (các) phiên bản libpng trên hộp của bạn:

# 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

Tạo liên kết biểu tượng:

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

Thử lại:

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 tương đương với định vị


8
Btw, mdfind libpng15.15.dylibkhông yêu cầu hack xác định vị trí
Jure C.

Cảm ơn @JureC., Tôi không biết về mdfind. Bạn cũng có thể sử dụng sudo find / -name libpng15 -print nhưng kết quả đầu ra hơi dài dòng.
phpguru

đây là điều duy nhất làm việc cho tôi, cảm ơn: D
holmeswatson

Cái này cũng có tác dụng với tôi. Vấn đề tôi gặp phải là libpng15 hiện là phiên bản cũ nên bản cập nhật sẽ không khắc phục được.
bigtunacan

1
Đây là giải pháp duy nhất làm việc cho tôi! Cảm ơn!
JLuiz

18

Đó là vì không có liên kết tượng trưng cho libpng. Bạn cần liên kết lại libpng.

brew unlink libpng && brew link libpng

Và bạn có thể gặp một số lỗi. Tôi đã sửa lỗi đó bằng quyền sửa chữa. Có thể là do macports đã gỡ cài đặt.

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

Tạo lại liên kết và nó sẽ hoạt động.


Trên El Capitan, sử dụng homebrew-php và đây là một giải pháp cho tôi. Ngoài liên kết trên, tôi cũng phải chạy brew link unixodbc. Nhưng hệ thống của tôi có quyền sở hữu gói cụ thể đó.
justinpage

11

Tôi đã giải quyết vấn đề này bằng cách sao chép nó vào thư mục bị thiếu:

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

brew reinstall libpng cứ cài libpng16 chứ không phải libpng15 nên mình buộc phải làm như trên.


Điều này sẽ gây ra một vấn đề bổ sung khi chạy bác sĩ bia. 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

8

Trong trường hợp của tôi, nó đã được libjpeg. Tất cả những gì tôi phải làm là chạy brew reinstall libjpegvà mọi thứ đều hoạt động!


2
Trong trường hợp của tôi, nó đã được libpng. brew reinstall libpnggiải quyết nó
user34812

4

Đề phòng người khác gặp sự cố này, tôi đã giải quyết nó bằng cách sau

brew update && brew upgrade # installs libpng 1.6

Điều này gây ra lỗi với các gói khác yêu cầu 1.5 mà chúng được xây dựng bằng, vì vậy tôi đã liên kết nó:

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

Bây giờ cả hai đang sống hòa thuận và sát cánh bên nhau vì những điều khác biệt. Sẽ tốt hơn nếu bạn xây dựng lại các gói phụ thuộc vào 1,5, nhưng điều này hoạt động như một biện pháp cố định băng nhanh chóng.


3

Tôi biết câu hỏi này đã có câu trả lời đưa ra giải pháp. Nhưng tôi muốn cho bạn hai xu của tôi để giúp mọi người hiểu được vấn đề. Gặp vấn đề tương tự, tôi đã tạo một câu hỏi cụ thể . Tôi gặp sự cố tương tự, nhưng chỉ với PHPStorm. Và chính xác khi tôi cố gắng chạy thử nghiệm từ trình soạn thảo.

dyld là trình liên kết động

Tôi gieo rằng dyld đang tìm kiếm /usr/local/lib/libpng15.15.dylib nhưng bên trong / usr / local / lib / của tôi thì không. Trong thư mục đó, tôi nhận được libpng16.16.dylib.

Cảm ơn một nhận xét, tôi hiểu rằng / usr / bin / php của tôi là một con trỏ đến php 5.5.8. Thay vào đó, ... / usr / local / bin / php là 5.5.14. PHPStorm đã làm việc với / usr / bin / php là cấu hình mặc định. Khi tôi chạy php qua bàn điều khiển, tôi chạy / urs / local / bin / php.

Vì vậy, ... Nếu bạn gặp một số lỗi dyld, có thể bạn đã cấu hình php sai. Đó là lý do bởi vì

$ brew update && brew upgrade
$ brew reinstall php55

Nhưng tôi không biết tại sao điều này không giải quyết được vấn đề với tôi. Có lẽ vì tôi có


1

Tôi cũng gặp sự cố này và không có giải pháp nào trong chuỗi này phù hợp với tôi. Hóa ra, vấn đề là tôi có dòng này trong ~/.bash_profile:

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

Và, hóa ra, /usr/local/phpchỉ là một liên kết tượng trưng với /usr/local/Cellar/php54/5.4.24/. Vì vậy, khi tôi gọi, php -itôi vẫn đang gọi php54. Tôi vừa xóa dòng này khỏi hồ sơ bash của mình và sau đó php đã hoạt động.

Vì một số lý do, mặc dù php55 hiện đang chạy, php.initệp từ php54 vẫn được tải và tôi nhận được cảnh báo này mỗi khi tôi gọi 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

Để khắc phục điều này, tôi chỉ cần thêm dòng sau vào hồ sơ bash của mình:

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

Và sau đó mọi thứ hoạt động như bình thường!


1

Tôi đã gặp lỗi này mà không được giải quyết bằng cách brew update && brew upgrade. Vì một số lý do tôi cần cài đặt nó từ đầu:

$ brew install libpng


1

Tôi đã rất khó khăn với lỗi này:

Lý do: Phiên bản thư viện không tương thích: php yêu cầu phiên bản 44.0.0 trở lên, nhưng libpng16.16.dylib cung cấp phiên bản 42.0.0 Trace / BPT trap: 6

Tôi đã làm tất cả những điều trên với bia và nhiều hơn nữa ... nhưng nó không phải là điều này!

Kiểm tra thư viện của bạn ở đâu:

sudo find / -name libpng16.16.dylib

Trong trường hợp của tôi, đây là kết quả có liên quan:

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

Vì vậy, vì tôi là người dùng MAMP, hóa ra lỗi đã xuất hiện trong khi tôi đang cố cập nhật từ PHP 7.1.0 lên 7.1.8 ( php MAMP cuối cùng khả dụng ) vì Symfony4 yêu cầu ít nhất 7.1.3

Cuối cùng, tôi đã cài đặt phiên bản mới của MAMP và nó đã hoạt động (4.1 đến 4.2). Tuy nhiên, hãy cẩn thận khi làm điều này, trước tiên bạn cần sao lưu mọi thứ trong thư mục MAMP / htdoc của mình. Đồng thời giữ một bản sao lưu của phiên bản php đã biên dịch tùy chỉnh của bạn hơn là có thể tồn tại trong MAMP / bin / php. (Trong trường hợp của tôi, tôi đã có một phiên bản PHP đặc biệt với trình điều khiển Oracle).

Ngoài ra, nếu bạn đã định cấu hình phiên bản php MAMP làm trình thông dịch php CLI của mình, bạn sẽ cần cập nhật PATH trong .bash_profile của mình

Nó sẽ trông giống như sau:

xuất PATH = / Applications / MAMP / bin / php / php7.1.8 / bin: $ PATH

Tôi hy vọng điều này có thể giúp ích.


0

Tôi gặp sự cố này sau khi cập nhật MAMP và $ PATH tùy chỉnh mà tôi đã đặt bị sai do phiên bản php mới, do đó, phiên bản php sai đã được tải trước và chính phiên bản php đó đã gây ra lỗi.

Cập nhật đường dẫn trong .bash_profile đã khắc phục sự cố của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.