PHP ne fonctionnait pas pour moi car je rencontrais ce problème de libpng , j'ai donc réinstallé une nouvelle version avec Homebrew.
Cependant, j'obtiens une erreur similaire avec libjpeg
cette heure:
$ 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
Aucune suggestion?
brew doctor
etbrew list
?Réponses:
Comme proposé par @ jirson-tavera dans le problème du repo homebrew-php , cela peut être corrigé sans remplacer votre installation de brassage:
la source
Même si la solution dans la réponse acceptée fonctionne, ce n'est pas la bonne façon de résoudre le problème. Cela viole l'intégrité des métadonnées de Brew.
Problème
Le problème est que la
jpeg
formule de Homebrew a été mise à niveau vers la v9, mais la formule PHP «en bouteille» existante est toujours construite et liée à la version précédente, v8, qui n'existe plus sur votre système.Vous avez quelques options pour résoudre le problème.
1. Recompiler la
phpxx
formule à partir de la source (fortement recommandé)Désinstallez votre formule php et reconstruisez-la à partir de la source au lieu d'utiliser la version en bouteille. De cette façon, php utilisera et établira un lien avec la version actuellement installée de
jpeg
. En supposant que vous avez affaire àphp71
:2. Rétrograder la
jpeg
formule de la bonne manière (préférable de la recompiler manuellement)Si vous n'avez pas couru
brew cleanup
, vous avez déjà lajpeg
version précédente dans la cave de votre bière, passez-y:Si vous obtenez une
jpeg does not have a version "8d" in the Cellar.
erreur, vous devez d'abord la restaurer en rétablissant l'historique:Vous pouvez trouver le hachage de validation en utilisant
brew log jpeg
et en parcourant les messages de validation.L'inconvénient est qu'il peut y avoir d'autres formules qui nécessitent que la version la plus récente fonctionne correctement, par exemple
imagemagick
. Si vous rencontrez de tels problèmes d'incompatibilité, vérifiez la première solution ci-dessus.3. Rétrograder
jpeg
en recompilant manuellement (non recommandé)Récupérez la source, compilez et écrasez la version de brew. Reportez-vous à la réponse de Denis pour plus de détails.
Ce n'est pas recommandé car cela viole l'intégrité de vos métadonnées de brassage. Brew pense qu'il a la version 8b, cependant, vous avez compilé manuellement 9b et écrasé les fichiers.
4. Reliez manuellement l'ancienne version (sérieusement?)
Ne liez pas manuellement les restes
libjpeg.8.dylib
. Si le fichier est là, vous pouvez simplement lebrew switch
faire comme mentionné dans la deuxième solution ci-dessus.C'est juste le pire hack que vous puissiez faire ici.
Ces problèmes seront finalement résolus .
la source
xcode-select --install
avant de pouvoir réinstaller PHP 7.1 à partir des sources.git checkout b231469
je l'ai faitcurl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rb
, alors au lieu degit checkout master
j'ai écritgit checkout Formula/jpeg.rb
.curl
ou l'autre. Pour moi, il semble que votre clone local ne soit pas à jour avec la télécommande 🤔.git checkout b231469
obtenez une erreur, essayez d'abord cecigit -C "$(brew --repo homebrew/core)" fetch --unshallow
J'ai rencontré le même problème aujourd'hui. La cause du problème était une version plus récente de
libjpeg
. Et la solution qui a fonctionné était de construire unephp
bouteille à partir de la source.Vérifiez la version disponible de
libjpeg
:Installer
php
depuis la source:Mise à jour :
si vous avez déjà installé,
php
vous devez le désinstaller avant de construire à partir de la source. Cela s'applique également aux extensions.la source
php
et les extensions. Ensuite, installezphp
avec--build-from-source
. J'ai regardé dans l'historique git de lalibjpeg
formule et la version de alibjpeg
été mise à jour9b
le 5 août.brew install --build-from-source php71
. Un problème est survenu pour moi ce soir après avoir courubrew upgrade
.J'ai eu le même problème et je l'ai résolu en téléchargeant le manuallu de l'archive tar libjpeg à partir d' ici et en exécutant:
la source
J'avais un problème similaire en essayant de mettre à niveau
composer
:Le problème était
php
que lalibjpeg
bibliothèque ne pouvait plus être trouvée . Une façon de résoudre ce problème consiste à réinstallerphp
etlibjpeg
. Voici comment je les ai réinstallés:J'ai ensuite pu tout mettre à jour à nouveau :)
🍻
la source
Une solution sale, qui fonctionne bien pour moi.
la source
La commande suivante a fonctionné pour moi.
la source
ls /usr/local/Cellar/jpeg/
et j'ai vu deux sous8d
- répertoires et9c
comme mon erreur étaitdyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
, il était logique d'essayer de charger le mauvais.Je n'ai pas essayé la réponse de Jirson, mais ce qui a fonctionné pour moi était:
la source
--ignore-dependencies
option lors de la désinstallation.J'avais le même problème et la seule chose qui m'aidait était d'utiliser le
--build-from-source
paramètre:la source
J'ai eu aussi ce problème. Je l'ai résolu de cette manière: Désinstaller jpeg / 8b:
Désinstallez jpeg / 9b:
Réinstaller jpeg / 9b
la source
Je partage cela car j'ai eu le même problème lors de l'utilisation de PHP5.4. À l'origine, j'avais PHP5.6 et cela fonctionnait bien. Ensuite, j'ai rétrogradé à php5.4 car mon application ne prend en charge que PHP5.4.
Puis cette erreur est survenue. J'ai remarqué que je l'ai
libjpeg.9.dylib
et que PHP5.4 est à la recherchelibjpeg.8.dylib
.Faire ce qui suit a réglé le problème:
la source
Homebrew php a été mis à jour et n'est plus un problème avec libjpeg
la source
Comme le note @lifecom, cela est corrigé avec la mise à jour php70 de homebrew, mais vous pouvez toujours rencontrer le problème si vous
brew upgrade
essayez de mettre à jour d'autres paquets avant de mettre à jour php70.Corrigez cela en mettant d'abord à jour manuellement php70 avec
brew upgrade php70
et vous devriez ensuite pouvoir exécuterbrew upgrade
sans problème (ou, du moins, sans ce problème).la source
Valet - Mac avec PHP7.1
la source
Dans certains cas, en particulier dans Catalina, le cask Homebrew pour le paquet peut exister mais pas être correctement lié. Dans ce cas, essayez:
la source