PHP funktionierte nicht für mich, da ich auf dieses libpng-Problem stieß , also habe ich eine neue Version mit Homebrew neu installiert.
Allerdings erhalte ich libjpeg
diesmal einen ähnlichen Fehler :
$ 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
Irgendwelche Vorschläge?
brew doctor
undbrew list
?Antworten:
Wie von @ jirson-tavera im Homebrew-PHP-Repo-Problem vorgeschlagen , kann dies behoben werden, ohne dass Ihre Brühinstallation überschrieben wird:
quelle
Obwohl die Lösung in der akzeptierten Antwort funktioniert, ist dies nicht der richtige Weg, um das Problem zu beheben. Es verletzt die Integrität der Metadaten von Brew.
Problem
Das Problem ist, dass die Homebrew-
jpeg
Formel auf Version 9 aktualisiert wurde, die vorhandene PHP-Formel in Flaschen jedoch weiterhin mit der vorherigen Version Version 8 erstellt und verknüpft ist, die auf Ihrem System nicht mehr vorhanden ist.Sie haben einige Möglichkeiten, um das Problem zu beheben.
1.
phpxx
Formel aus der Quelle neu kompilieren (sehr zu empfehlen)Deinstallieren Sie Ihre PHP-Formel und erstellen Sie sie aus der Quelle neu, anstatt die abgefüllte Version zu verwenden. Auf diese Weise wird PHP die aktuell installierte Version von verwenden und mit dieser verknüpfen
jpeg
. Angenommen, Sie haben es zu tun mitphp71
:2. Downgrade der
jpeg
Formel auf die richtige Weise (bevorzugt gegenüber dem manuellen Neukompilieren)Wenn Sie nicht gelaufen sind
brew cleanup
, haben Sie bereits die vorherigejpeg
Version im Keller Ihres Gebräus. Wechseln Sie dazu:Wenn Sie eine
jpeg does not have a version "8d" in the Cellar.
Fehlermeldung erhalten, müssen Sie diese zuerst wiederherstellen, indem Sie den Verlauf zurücksetzen:Sie können den Commit-Hash herausfinden, indem Sie
brew log jpeg
die Commit-Nachrichten verwenden und durchgehen.Der Nachteil ist, dass es möglicherweise andere Formeln gibt, für die die neuere Version ordnungsgemäß funktionieren muss, z
imagemagick
. Wenn Sie auf solche Inkompatibilitätsprobleme stoßen, überprüfen Sie die erste Lösung oben.3. Downgrade
jpeg
durch manuelles Neukompilieren (nicht empfohlen)Holen Sie sich die Quelle, kompilieren Sie die Version von Brew und überschreiben Sie sie. Einzelheiten finden Sie in der Antwort von Denis .
Dies wird nicht empfohlen, da dies die Integrität Ihrer Brühmetadaten verletzt. Brew glaubt, dass es die 8b-Version hat, Sie haben jedoch 9b manuell kompiliert und die Dateien überschrieben.
4. Verknüpfen Sie die alte Version manuell (ernsthaft?)
Verknüpfen Sie den Rest nicht manuell
libjpeg.8.dylib
. Wenn die Datei vorhanden ist, können Sie sie einfachbrew switch
wie in der zweiten Lösung oben erwähnt aufrufen.Es ist nur der schlimmste Hack, den Sie hier machen können.
Solche Probleme werden schließlich behoben .
quelle
xcode-select --install
bevor ich PHP 7.1 aus dem Quellcode neu installieren konnte.git checkout b231469
ichcurl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rb
, dann stattgit checkout master
ich schriebgit checkout Formula/jpeg.rb
.curl
. Mir scheint, dass Ihr lokaler Klon mit der Fernbedienung irgendwie nicht auf dem neuesten Stand ist 🤔.git checkout b231469
Fehler auftritt, versuchen Sie dies zuerstgit -C "$(brew --repo homebrew/core)" fetch --unshallow
Ich bin heute auf ein ähnliches Problem gestoßen. Die Ursache des Problems war eine neuere Version von
libjpeg
. Und die Lösung, die funktionierte, bestand darin, einephp
Flasche aus der Quelle zu bauen.Überprüfen Sie die verfügbare Version von
libjpeg
:php
Von der Quelle installieren :Update :
Wenn Sie bereits installiert
php
haben, müssen Sie es vor dem Erstellen aus dem Quellcode deinstallieren. Dies gilt auch für Erweiterungen.quelle
php
die Erweiterungen deinstallieren . Dann installierenphp
mit--build-from-source
. Ich habe mir die Git-Geschichte derlibjpeg
Formel angesehen und die Version vonlibjpeg
wurde9b
am 5. August aktualisiert .brew install --build-from-source php71
. Das Problem trat heute Abend nach dem Laufen für mich aufbrew upgrade
.Ich hatte das gleiche Problem und löste es, indem ich das libjpeg tarball manuallu von hier herunterlud und ausführte :
quelle
Beim Versuch, ein Upgrade durchzuführen, trat ein ähnliches Problem auf
composer
:Problem war,
php
konnte keinelibjpeg
Bibliothek mehr finden. Eine Möglichkeit, dies zu beheben, besteht darin,php
und neu zu installierenlibjpeg
. So habe ich sie neu installiert:Ich konnte dann alles wieder upgraden :)
🍻
quelle
Eine schmutzige Lösung, die für mich gut funktioniert.
quelle
Der folgende Befehl hat bei mir funktioniert.
quelle
ls /usr/local/Cellar/jpeg/
zwei Unterverzeichnissen gesucht8d
und9c
da mein Fehler war,dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
machte es Sinn, dass versucht wurde, das falsche zu laden.Ich habe Jirsons Antwort nicht ausprobiert, aber was für mich funktioniert hat, war:
quelle
--ignore-dependencies
Option bei der Deinstallation verwenden.Ich hatte das gleiche Problem und das einzige, was geholfen hat, war die Verwendung des
--build-from-source
Parameters:quelle
Ich hatte auch dieses Problem. Ich habe es folgendermaßen gelöst: Jpeg / 8b deinstallieren:
Jpeg / 9b deinstallieren:
Installieren Sie jpeg / 9b erneut
quelle
Ich teile dies, da ich das gleiche Problem bei der Verwendung von PHP5.4 hatte. Ursprünglich hatte ich PHP5.6 und es funktionierte gut. Dann habe ich ein Downgrade auf PHP5.4 durchgeführt, da meine App nur PHP5.4 unterstützt.
Dann trat dieser Fehler auf. Mir ist aufgefallen, dass ich habe
libjpeg.9.dylib
und PHP5.4 suchtlibjpeg.8.dylib
.Durch Folgendes wurde das Problem behoben:
quelle
Homebrew PHP wurde aktualisiert und ist kein Problem mehr mit libjpeg
quelle
Wie @lifecom feststellt, wird dies mit dem php70-Update von homebrew behoben, aber Sie könnten trotzdem auf das Problem stoßen, wenn
brew upgrade
versuchen, andere Pakete vor dem Upgrade von php70 zu aktualisieren.Beheben
brew upgrade php70
Sie dies, indem Sie php70 zuerst manuell mit aktualisieren und dann sollten Sie in der Lage sein,brew upgrade
kein Problem auszuführen (oder zumindest ohne dieses Problem).quelle
Valet - Mac mit PHP7.1
quelle
In einigen Fällen, insbesondere in Catalina, ist das Homebrew-Fass für die Verpackung möglicherweise vorhanden, jedoch nicht ordnungsgemäß verknüpft. In diesem Fall versuchen Sie:
quelle