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 були встановлені за допомогою домашньої мови за винятком композитора (встановленого за допомогою 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.

Спасибі заздалегідь!

Відповіді:


156

Я пропоную вам запустити:

$ brew update && brew upgrade

До декількох хвилин тому у мене теж була ця проблема. Оскільки у мене є остання версія PHP, я вирішив її:

$ brew reinstall php55

Сподіваюся, що це допомагає.


Дякую, я видалив та перевстановив домашню мову повністю, але заздалегідь я думаю, що це було б кращим варіантом.
user3458861

У мене було те саме питання з іншою програмою (благодать), і це виправлено.
mstringer

1
Можливо, корисно: Можливо, ImageMagick є винуватцем цього. У мене була аналогічна проблема з облітацією ImageMagick / usr / local / bin / порівняння, яку я мав розійтися.
phpguru

Мені не потрібно було робити оновлення $ brew - але для мене працювало оновлення $ brew та $ brew перевстановлення php53.
Томас Беннетт

Попередження: оновлення оновить усі ваші (застарілі) формули і може зайняти деякий час!
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 еквівалент локації


8
Btw, mdfind libpng15.15.dylibне потрібно знайти хак
Jure C.

Дякую @JureC., Мені не було відомо про mdfind. Ви також можете використовувати sudo find / -name libpng15 -print, але висновок - tad verbose.
phpguru

це єдине, що працювало для мене, дякую: D
holmeswatson

Це працювало і для мене. У мене виникло питання про те, що libpng15 тепер є старою версією, тому оновлення не виправляється.
bigtunacan

1
Це єдине рішення, яке працювало на мене! Дякую!
JLuiz

18

Це тому, що немає символьних посилань на libpng. Вам потрібно знову пов’язати libpng.

brew unlink libpng && brew link libpng

І ви можете отримати деяку помилку. Я виправив цю помилку, виправивши дозвіл. Можливо, це через невстановлені макпорти.

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

Перезавантажити заварку libpng продовжував встановлювати libpng16, а не libpng15, тому мене змусили зробити вище.


Це спричинить додаткову проблему при запуску заварювального лікаря. 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

У моєму випадку це було libjpeg. Все, що я мав зробити, це бігати, brew reinstall libjpegі все просто працювало!


2
У моєму випадку це було libpng. brew 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 - динамічний лінкер

Я сію, що дид шукав /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.

Отже, ... Якщо у вас виникла помилка з файлом, можливо, у вас неправильна конфігурація 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.

Чомусь php55 зараз працює, php.iniфайл із 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 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, виявилося, що помилка з’явилася, коли я намагався оновити з PHP 7.1.0 до 7.1.8 ( останній доступний MAMP php ), оскільки для Symfony4 потрібен принаймні 7.1.3

Наприкінці я встановив нову версію MAMP, і вона спрацювала (4.1 до 4.2). Однак будьте обережні, коли ви робите це, вам потрібно спочатку створити резервну копію всього, що знаходиться у вашій папці MAMP / htdoc. Також зберігайте резервну копію вашої користувальницької компільованої версії php, ніж вона може жити в MAMP / bin / php. (У моєму випадку у мене була спеціальна версія PHP з драйверами Oracle).

Крім того, якщо ви налаштували MAMP php-версію як ваш інтерпретатор php для CLI, вам потрібно буде оновити PATH у своєму .bash_profile

Це має виглядати приблизно так:

експортувати PATH = / Програми / MAMP / bin / php / php7.1.8 / bin: $ PATH

Я сподіваюся, що це може допомогти.


0

Цю проблему я отримав після оновлення MAMP, і призначений нами нестандартний $ PATH був неправильним через нову версію php, тому спочатку була завантажена неправильна версія php, і саме ця версія php викликала помилку.

Оновлення шляху в моєму .bash_profile виправило мою проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.