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 ยกเว้นผู้แต่ง (ติดตั้งโดยใช้ 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

ขอบคุณล่วงหน้า!

คำตอบ:


156

ฉันขอแนะนำให้คุณเรียกใช้:

$ brew update && brew upgrade

จนกระทั่งสองสามนาทีที่ผ่านมาฉันก็มีปัญหานี้เช่นกัน เนื่องจากฉันมี PHP เวอร์ชันล่าสุดฉันจึงแก้ไขด้วย:

$ brew reinstall php55

หวังว่าจะช่วยได้


ขอบคุณฉันถอนการติดตั้งและติดตั้ง homebrew ใหม่ทั้งหมด แต่เมื่อมองย้อนกลับไปฉันคิดว่านี่น่าจะเป็นตัวเลือกที่ดีกว่า
user3458861

ฉันมีปัญหาเดียวกันกับโปรแกรมอื่น (พระคุณ) และสิ่งนี้ได้รับการแก้ไขแล้ว
mstringer

1
อาจมีประโยชน์: เป็นไปได้ ImageMagick เป็นตัวการสำหรับสิ่งนี้ ฉันมีปัญหาที่คล้ายกันกับ ImageMagick obliterating / usr / local / bin / เปรียบเทียบซึ่งฉันจะทำให้แตกต่างกัน
phpguru

ฉันไม่ต้องทำการอัพเกรด $ brew - แต่การอัปเดต $ brew และ $ brew ติดตั้ง php53 ใหม่นั้นใช้ได้สำหรับฉัน
Thomas Bennett

คำเตือน: การอัปเกรดจะอัปเดตสูตร (ล้าสมัย) ทั้งหมดของคุณและอาจใช้เวลาสักครู่!
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

สร้าง symlink:

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) MacOS X เทียบเท่ากับ locate


8
Btw mdfind libpng15.15.dylibไม่ต้องการการแฮ็ก
Jure C.

ขอบคุณ @JureC. ฉันไม่รู้จัก mdfind คุณยังสามารถใช้ sudo find / -name libpng15 -print แต่ผลลัพธ์เป็นแบบละเอียดเล็กน้อย
phpguru

นี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉันขอบคุณ: D
holmeswatson

สิ่งนี้ได้ผลสำหรับฉันเช่นกัน ปัญหาที่ฉันมีคือ libpng15 เป็นเวอร์ชันเก่าดังนั้นการอัปเดตจะไม่สามารถแก้ไขได้
bigtunacan

1
นี่เป็นทางออกเดียวที่เหมาะกับฉัน! ขอบคุณ!
JLuiz

18

เป็นเพราะไม่มี symlink สำหรับ 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

ชงติดตั้ง 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เป็นตัวเชื่อมโยงแบบไดนามิก

ฉันหว่าน 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เป็นเพียง symlink /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 ค้นหา / -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 ให้เป็นล่าม CLI php ของคุณคุณจะต้องอัปเดต PATH ใน. bash_profile ของคุณ

ควรมีลักษณะดังนี้:

ส่งออก PATH = / Applications / MAMP / bin / php / php7.1.8 / bin: $ PATH

ฉันหวังว่านี่จะช่วยได้


0

ฉันพบปัญหานี้หลังจากอัปเดต MAMP และ $ PATH ที่กำหนดเองที่ฉันตั้งไว้นั้นผิดเนื่องจากเวอร์ชัน php ใหม่ดังนั้นจึงโหลด php เวอร์ชันผิดก่อนและเป็นเวอร์ชันของ php ที่ทำให้เกิดข้อผิดพลาด

การอัปเดตเส้นทางใน. bash_profile ของฉันช่วยแก้ปัญหาของฉันได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.