PHP não estava funcionando para mim porque eu estava encontrando esse problema de libpng , então reinstalei uma nova versão com o Homebrew.
No entanto, estou recebendo um erro semelhante com libjpeg
este tempo:
$ 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
Alguma sugestão?
brew doctor
ebrew list
?Respostas:
Conforme proposto por @ jirson-tavera no problema do repositório homebrew-php , isso pode ser corrigido sem substituir a instalação do brew:
fonte
Mesmo que a solução na resposta aceita funcione, não é a maneira certa de resolver o problema. Isso viola a integridade dos metadados do brew.
Problema
O problema é que a
jpeg
fórmula do Homebrew foi atualizada para a v9, mas a fórmula PHP "engarrafada" existente ainda é construída e vinculada à versão anterior, v8, que não existe mais em seu sistema.Você tem algumas opções para corrigir o problema.
1. Recompilar a
phpxx
fórmula da fonte (altamente recomendado)Desinstale sua fórmula php e reconstrua-a a partir da fonte em vez de usar a versão engarrafada. Dessa forma, o php usará e vinculará a versão atualmente instalada do
jpeg
. Supondo que você esteja lidando comphp71
:2. Faça downgrade da
jpeg
fórmula da maneira certa (preferível a recompilá-la manualmente)Se você não correu
brew cleanup
, você já tem ajpeg
versão anterior na adega da sua cerveja, mude para ela:Se receber um
jpeg does not have a version "8d" in the Cellar.
erro, primeiro você precisa restaurá-lo, revertendo o histórico:Você pode descobrir o hash de commit usando
brew log jpeg
e examinando as mensagens de commit.A desvantagem é que pode haver outras fórmulas que requerem que a versão mais recente funcione corretamente, por exemplo
imagemagick
. Se você enfrentar esses problemas de incompatibilidade, verifique a primeira solução acima.3. Downgrade
jpeg
recompilando manualmente (não recomendado)Busque o código-fonte, compile e sobrescreva a versão do brew. Consulte a resposta de Denis para obter detalhes.
Isso não é recomendado porque viola a integridade dos metadados do seu brew. Brew acha que tem a versão 8b, no entanto, você compilou manualmente o 9b e substituiu os arquivos.
4. Link simbólico manualmente para a versão antiga (sério?)
Não vincule manualmente o que sobrou
libjpeg.8.dylib
. Se o arquivo estiver lá, você pode acessábrew switch
-lo conforme mencionado na segunda solução acima.É apenas o pior hack que você pode fazer aqui.
Esses problemas serão eventualmente corrigidos .
fonte
xcode-select --install
antes de poder reinstalar o PHP 7.1 do código-fonte.git checkout b231469
eu fizcurl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rb
, então em vez degit checkout master
eu escrevigit checkout Formula/jpeg.rb
.curl
. Para mim, parece que o seu clone local não está atualizado com o controle remoto 🤔.git checkout b231469
obtiver um erro, tente este primeirogit -C "$(brew --repo homebrew/core)" fetch --unshallow
Eu encontrei um problema semelhante hoje. A causa do problema era uma versão mais recente do
libjpeg
. E a solução que funcionou foi construir aphp
garrafa a partir da fonte.Verifique a versão disponível de
libjpeg
:Instale
php
da fonte:Atualizar :
Se você já instalou,
php
você deve desinstalá-lo antes de compilar a partir do código-fonte. Também se aplica a extensões.fonte
php
e as extensões. Em seguida, instalephp
com--build-from-source
. Eu olhei o histórico do git dalibjpeg
fórmula e a versãolibjpeg
foi atualizada9b
em 5 de agosto.brew install --build-from-source php71
. O problema surgiu para mim esta noite depois de correrbrew upgrade
.Eu tive o mesmo problema e resolvi baixando o manuallu tarball libjpeg daqui e executando:
fonte
Eu estava tendo um problema semelhante ao tentar fazer o upgrade
composer
:O problema era
php
que não conseguia mais encontrar alibjpeg
biblioteca. Uma maneira de corrigir isso é reinstalarphp
elibjpeg
. Veja como eu os reinstalei:Eu pude atualizar tudo novamente :)
🍻
fonte
Uma solução suja, que funciona bem para mim.
fonte
Seguir o comando funcionou para mim.
fonte
ls /usr/local/Cellar/jpeg/
e vi dois subdiretórios8d
e9c
Como meu erro foi,dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
fazia sentido tentar carregar o errado.Não tentei a resposta de Jirson, mas o que funcionou para mim foi:
fonte
--ignore-dependencies
opção ao desinstalar.Eu estava com o mesmo problema e a única coisa que ajudou foi usar o
--build-from-source
parâmetro:fonte
Eu também tive esse problema. Eu resolvi desta forma: Desinstale jpeg / 8b:
Desinstalar jpeg / 9b:
Reinstalar jpeg / 9b
fonte
Estou compartilhando isso porque tive o mesmo problema ao usar o PHP5.4. Originalmente, eu tinha o PHP5.6 e estava funcionando bem. Então eu fiz downgrade para php5.4, pois meu aplicativo só suporta PHP5.4.
Então este erro apareceu. Eu percebi que o
libjpeg.9.dylib
PHP5.4 está procurandolibjpeg.8.dylib
.Fazer o seguinte resolveu o problema:
fonte
O homebrew php foi atualizado e não é mais um problema com a libjpeg
fonte
Como observou @lifecom, isso foi corrigido com a atualização do php70 do homebrew, mas você ainda pode ter o problema se
brew upgrade
estiver tentando atualizar outros pacotes antes de atualizar o php70.Corrija isso atualizando manualmente o php70 primeiro com
brew upgrade php70
e então não será possível executarbrew upgrade
nenhum problema (ou, bem, pelo menos sem esse problema).fonte
Valet - mac com php7.1
fonte
Em alguns casos, especialmente em Catalina, o barril Homebrew para o pacote pode existir, mas não estar devidamente vinculado. Nesse caso, tente:
fonte