web-dev-qa-db-fra.com

dyld: bibliothèque non chargée: /usr/local/lib/libjpeg.8.dylib - homebrew php

PHP ne fonctionnait pas pour moi car je rencontrais ce problème de libpng , alors j'ai réinstallé une nouvelle version avec Homebrew. 

Cependant, je reçois une erreur similaire avec libjpeg cette fois-ci:

$ 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?

99
Snowcrash

Comme proposé par @ jirson-tavera dans le problème de mise en pension de homebrew-php , ceci peut être corrigé sans modifier l'installation de votre infusion: 

wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz
tar xzf jpegsrc.v8d.tar.gz
cd jpeg-8d
./configure
make
cp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib
237
Denis Pitzalis

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 la bière.

Problème

Le problème est que la formule jpeg de Homebrew a été mise à niveau vers la v9 mais que la formule "en bouteille" PHP 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 formule phpxx à partir de la source (hautement 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 traitez avec php71

brew reinstall php71 --build-from-source

2. Déclassez la formule jpeg dans le bon sens (préféré sur recompiler manuellement)

Si vous n'avez pas exécuté brew cleanup, vous avez déjà la version jpeg précédente dans la cave de votre bière, passez à celle-ci: 

brew switch jpeg 8d

Si vous obtenez une erreur jpeg does not have a version "8d" in the Cellar., vous devez d'abord le restaurer en rétablissant l'historique: 

cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core
git checkout b231469
HOMEBREW_NO_AUTO_UPDATE=1 brew install jpeg
git checkout master

brew switch jpeg 8d

Vous pouvez connaître le hachage de validation en utilisant brew log jpeg et en parcourant les messages de validation. 

L'inconvénient est qu'il peut exister d'autres formules nécessitant le fonctionnement correct de la version la plus récente, 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 le code source, compilez et écrasez la version de Brew. Reportez-vous à Réponse de Denis pour plus de détails. 

Ceci n'est pas recommandé car cela viole l'intégrité des métadonnées de votre brassage. Brew pense qu'il a la version 8b, cependant, vous avez compilé manuellement 9b et écrasé les fichiers. 

4. Relier manuellement l'ancienne version (sérieusement?)

Ne pas manuellement créer un lien symbolique le reste libjpeg.8.dylib. Si le fichier est là, vous pouvez simplement brew switch comme mentionné dans la deuxième solution ci-dessus. 

C'est le pire bidouillage que vous puissiez faire ici.


Ces problèmes seront éventuellement corrigés

150
sepehr

J'ai rencontré le même problème aujourd'hui. Le problème était dû à une version plus récente de libjpeg. Et la solution qui a fonctionné a été de construire une bouteille php à partir de la source.

Vérifier la version disponible de libjpeg:

$brew info libjpeg
jpeg: stable 9b (bottled)
Image manipulation library
http://www.ijg.org
/usr/local/Cellar/jpeg/9b (20 files, 724KB) *
  Poured from bottle on 2017-08-07 at 12:06:42
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/jpeg.rb

Installez php à partir du source:

brew install --build-from-source php56

Mettre à jour :
Si vous avez déjà installé php, vous devez le désinstaller avant de générer à partir du source. Cela s'applique également aux extensions.

13
Paweł Wacławczyk

J'avais un problème similaire en essayant de mettre à jour composer:

dyld: la bibliothèque n'est pas chargée: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
Référencé depuis:/usr/local/bin/php
Raison: image non trouvée
composer: PHP Le support de Phar est requis pour cette formule
Erreur: une exigence non satisfaite a échoué à cette construction. 

Le problème était php n'a pas pu trouver la bibliothèque libjpeg. Une façon de résoudre ce problème consiste à réinstaller php et libjpeg. Voici comment je les ai réinstallés:

# find out which version of php is installed
brew list | grep php

# uninstall php
brew uninstall php70 --ignore-dependencies

# uninstall libjpeg
brew uninstall libjpeg --ignore-dependencies

# install libjpeg again
brew install libjpeg

# install php again
brew install php70

J'ai ensuite pu tout améliorer à nouveau :)

brew update && brew upgrade

????

6
GabLeRoux

J'ai eu le même problème et je l'ai résolu en téléchargeant manuellement l'archive libjpeg à partir de ici et en cours d'exécution: 

tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
Sudo make install

Sudo ranlib /usr/local/lib/libjpeg.a #Optionally
6
Jirson Tavera

Je n'ai pas essayé la réponse de Jirson, mais ce qui a fonctionné pour moi a été:

brew uninstall libjpeg
brew install libjpeg
4
gwg

La commande suivante a fonctionné pour moi.

brew switch libjpeg 8d
4
Pankaj Agrawal

J'avais le même problème et la seule chose qui m'a aidé était d'utiliser le paramètre --build-from-source:

brew install php70 --build-from-source
3
martin

Une solution sale, cela fonctionne bien pour moi.

ln -s /usr/local/lib/libjpeg.9.dylib /usr/local/lib/libjpeg.8.dylib
2
Jorge Lobo

J'ai aussi eu ce problème. Je l'ai résolu de cette façon: Désinstallez jpeg/8b:

brew uninstall --ignore-dependencies libjpeg

Désinstallez jpeg/9b:

brew uninstall --ignore-dependencies jpeg

 Uninstall jpeg/8b and 9b

Réinstaller jpeg/9b

brew install jpeg

 Re-install jpeg/9b

1
Roberto

Je partage cela car j'avais le même problème avec PHP 5.4. A l'origine, j'avais PHP5.6 et ça fonctionnait bien. Ensuite, j'ai rétrogradé en php5.4 car mon application ne supporte que PHP 5.4.

Puis cette erreur est venue. J'ai remarqué que j'ai libjpeg.9.dylib et que PHP5.4 recherche libjpeg.8.dylib

Procédez comme suit pour résoudre le problème: 

brew uninstall php54
brew install --build-from-source php54
1
sudewa nawarathna

Comme @lifecom le note, ceci est corrigé avec la mise à jour php70 de homebrew, mais vous pouvez toujours rencontrer le problème si brew upgrade tente de mettre à jour d'autres paquets avant la mise à jour de php70.

Corrigez cela en mettant à jour manuellement php70 d’abord avec brew upgrade php70 et vous devriez alors pouvoir exécuter brew upgrade sans problème (ou, enfin, au moins sans this problem).

0
Dave Hamilton
brew switch libjpeg 8d

Valet - mac avec php7.1

0
Basem Olimy

Homebrew php a été mis à jour et n'est plus un problème avec libjpeg

0
lifecom