PHP tidak berfungsi untuk saya karena saya mengalami masalah libpng ini , jadi saya menginstal ulang versi baru dengan Homebrew.
Namun, saya mendapatkan kesalahan serupa dengan libjpeg
kali ini:
$ php -v
dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
Trace/BPT trap: 5
Ada saran?
brew doctor
danbrew list
?Jawaban:
Seperti yang diusulkan oleh @ jirson-tavera dalam masalah repo homebrew-php , ini dapat diperbaiki tanpa menimpa instalasi minuman Anda:
sumber
Meskipun solusi dalam jawaban yang diterima berfungsi, itu bukan cara yang tepat untuk memperbaiki masalah. Itu melanggar integritas metadata brew.
Masalah
Masalahnya adalah
jpeg
formula Homebrew telah diupgrade ke v9 tetapi formula PHP "botol" yang ada masih dibangun dan ditautkan dengan versi sebelumnya, v8, yang tidak lagi ada di sistem Anda.Anda memiliki beberapa opsi untuk memperbaiki masalah tersebut.
1. Kompilasi ulang
phpxx
rumus dari sumber (sangat disarankan)Hapus instalan rumus php Anda, dan buat ulang dari sumbernya daripada menggunakan versi botol. Dengan cara ini, php akan menggunakan dan menautkan ke versi yang saat ini diinstal
jpeg
. Dengan asumsi Anda berurusan denganphp71
:2. Turunkan
jpeg
rumus dengan cara yang benar (lebih disukai daripada menyusun ulang secara manual)Jika Anda belum menjalankan
brew cleanup
, Anda sudah mendapatkanjpeg
versi sebelumnya di gudang minuman Anda, beralihlah ke versi itu:Jika Anda mendapatkan
jpeg does not have a version "8d" in the Cellar.
kesalahan, Anda harus memulihkannya terlebih dahulu dengan mengembalikan riwayat:Anda dapat mengetahui hash komit dengan menggunakan
brew log jpeg
dan melalui pesan komit.Kelemahannya adalah mungkin ada rumus lain yang membutuhkan versi yang lebih baru untuk bekerja dengan baik, misalnya
imagemagick
. Jika Anda menghadapi masalah ketidakcocokan, periksa solusi pertama di atas.3. Turunkan versi
jpeg
dengan mengompilasi ulang secara manual (tidak disarankan)Ambil sumbernya, kompilasi dan timpa versi minumannya. Lihat jawaban Denis untuk detailnya.
Ini tidak disarankan karena melanggar integritas metadata minuman Anda. Brew berpikir bahwa ia memiliki versi 8b, namun, Anda mengompilasi 9b secara manual dan menimpa file.
4. Tautkan versi lama secara manual (serius?)
Jangan menghubungkan sisa file secara manual
libjpeg.8.dylib
. Jika file ada di sana, Anda bisa langsungbrew switch
ke sana seperti yang disebutkan dalam solusi kedua di atas.Itu hanya peretasan terburuk yang dapat Anda lakukan di sini.
Masalah seperti itu pada akhirnya akan diperbaiki .
sumber
xcode-select --install
sebelum saya dapat menginstal ulang PHP 7.1 dari sumber.git checkout b231469
saya lakukancurl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rb
, alih-alihgit checkout master
saya menulisgit checkout Formula/jpeg.rb
.curl
. Bagi saya, sepertinya klon lokal Anda tidak up-to-date dengan remote 🤔.git checkout b231469
mendapat kesalahan, maka coba ini dulugit -C "$(brew --repo homebrew/core)" fetch --unshallow
Saya mengalami masalah serupa hari ini. Penyebab masalahnya adalah versi yang lebih baru
libjpeg
. Dan solusi yang berhasil adalah membuatphp
botol dari sumbernya.Periksa versi yang tersedia dari
libjpeg
:Instal
php
dari sumber:Pembaruan :
Jika Anda telah menginstal,
php
Anda harus menghapus instalannya sebelum membangun dari sumber. Ini juga berlaku untuk ekstensi.sumber
php
dan ekstensi. Kemudian instalphp
dengan--build-from-source
. Saya telah melihat sejarah git darilibjpeg
formula dan versilibjpeg
diperbarui9b
pada tanggal 5 Agustus.brew install --build-from-source php71
. Masalah muncul untuk saya malam ini setelah berjalanbrew upgrade
.Saya memiliki masalah yang sama dan saya menyelesaikannya dengan mengunduh libjpeg tarball manuallu dari sini dan menjalankan:
sumber
Saya mendapatkan masalah serupa saat mencoba meningkatkan
composer
:Masalah tidak
php
dapat menemukanlibjpeg
perpustakaan lagi. Salah satu cara untuk memperbaikinya adalah dengan menginstal ulangphp
danlibjpeg
. Berikut cara saya menginstalnya kembali:Saya kemudian dapat meningkatkan semuanya lagi :)
🍻
sumber
Solusi kotor, itu bekerja dengan baik untuk saya.
sumber
Mengikuti perintah berhasil untuk saya.
sumber
ls /usr/local/Cellar/jpeg/
dan melihat dua subdirektori8d
dan9c
Karena kesalahan saya adalahdyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
masuk akal itu mencoba memuat yang salah.Saya tidak mencoba jawaban Jirson, tetapi yang berhasil untuk saya adalah:
sumber
--ignore-dependencies
opsi ini saat mencopot pemasangan.Saya mengalami masalah yang sama dan satu-satunya hal yang membantu adalah menggunakan
--build-from-source
parameter:sumber
Saya juga punya masalah ini. Saya menyelesaikannya dengan cara ini: Copot pemasangan jpeg / 8b:
Copot pemasangan jpeg / 9b:
Instal ulang jpeg / 9b
sumber
Saya membagikan ini karena saya memiliki masalah yang sama saat menggunakan PHP5.4. Awalnya, saya memiliki PHP5.6 dan berfungsi dengan baik. Kemudian saya menurunkan versi ke php5.4 karena aplikasi saya hanya mendukung PHP5.4.
Kemudian kesalahan ini muncul. Saya perhatikan bahwa saya memiliki
libjpeg.9.dylib
dan PHP5.4 sedang mencarilibjpeg.8.dylib
.Melakukan hal berikut mengurutkan masalah:
sumber
Homebrew php telah diperbarui dan tidak lagi menjadi masalah dengan libjpeg
sumber
Sebagai catatan @lifecom, ini diperbaiki dengan pembaruan php70 homebrew, tetapi Anda mungkin masih mengalami masalah jika
brew upgrade
mencoba memperbarui paket lain sebelum memutakhirkan php70.Perbaiki ini dengan memperbarui php70 secara manual terlebih dahulu
brew upgrade php70
dan Anda seharusnya tidak dapat menjalankanbrew upgrade
masalah (atau, setidaknya tanpa masalah ini ).sumber
Valet - mac dengan php7.1
sumber
Dalam beberapa kasus, terutama di Catalina, tong Homebrew untuk paket mungkin ada tetapi tidak ditautkan dengan benar. Dalam hal ini coba:
sumber