Instalação do Xdebug no MacOS Catalina 10.15

13

Tentei instalar o Xdebug no OS X 10.15 e tive o seguinte problema:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: erro fatal: arquivo 'php.h' não encontrado

Tentei corrigir o problema como descrito aqui: Instalando o xdebug no MacOs Mojave - arquivo 'php.h' não encontrado

Infelizmente, os arquivos de cabeçalho não podem ser encontrados neste diretório: /Library/Developer/CommandLineTools/Packages

Alguma idéia de onde posso obter os arquivos de cabeçalho atuais do OS X 10.15?

Guenter
fonte

Respostas:

28

tl; dr

A Apple decidiu remover o arquivo de cabeçalhos /usr/includee o macOS_SDK_headers_for_macOS_10.14.pkgpacote. Para instalar o Xdebug, você precisará compilar o Xdebug manualmente com a referência correta em ambos phpizee make.

Para mais detalhes, escrevi um artigo de blog sobre o problema e a solução


Para encurtar a história, a Apple decidiu lançar /usr/includeno MacOS Catalina, que sempre foi o local padrão para o arquivo de cabeçalho C nos sistemas UNIX. Tentar instalar através do PEAR / PECL retornará um erro, pois o compilador procurará o arquivo de cabeçalhos necessário /usr/include. Portanto, a solução é compilar o Xdebug manualmente, especificando manualmente o local real dos arquivos de cabeçalho, que ainda são fornecidos pelo Xcode, apenas em um local diferente.

Primeiro, verifique se o Xcode está instalado, incluindo as ferramentas de linha de comando. O comando a seguir exibirá o local do SDK padrão:

$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

O cabeçalho que você deseja ( php.h) será inserido /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

Obtendo fonte

Vamos compilar o 2.7.2 , obtendo o código fonte do git. Como alternativa, você pode baixar a fonte do site Xdebug .

git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2

phpize

Em seguida, precisamos fazer uma cópia phpizepara poder editar o caminho de inclusão:

cp /usr/bin/phpize .
nano ./phpize

Encontre esta linha:

includedir="`eval echo ${prefix}/include`/php"

... e substitua-o por esta linha:

includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

Execute phpize:

./phpize

Agora você deve ver algo assim:

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

Configurar e construir

Agora podemos configurar:

./configure --enable-xdebug

... e execute make usando nosso local personalizado do SDK definido como sinalizadores do compilador:

make CPPFLAGS='-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext/date/lib'

Pode ver algum aviso, apenas ignorá-lo por enquanto. Por fim, precisamos executar:

make install

Novamente, esse comando falhará porque não pode mover a extensão para o lugar certo. O SIP impedirá isso. Mas não se preocupe, cuidaremos disso manualmente na próxima etapa. O make install ainda é necessário, pois assinará o arquivo * .so.

Suporte ativado em PHP

Em seguida, movemos o executável para um local seguro. Eu uso /usr/local/php/extensions.

sudo mkdir -p /usr/local/php/extensions
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /usr/local/php/extensions

Em seguida, editamos a configuração do PHP para ativar o Xdebug. Simplesmente edite php.ini:

sudo nano /etc/php.ini

E adicionamos o seguinte na parte inferior:

[xdebug]
zend_extension=/usr/local/php/extensions/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

Reinicie o servidor interno para garantir:

sudo apachectl restart

E finalmente teste tudo correu bem:

php -i | grep "xdebug support"

Se o comando acima não retornar nada, o Xdebug não estará disponível na sua instalação. Volte as etapas para descobrir o que está faltando.


EDITAR

Uma correção mais completa seria editar o resultado de php-config --include-dir, que retorna /usr/include/php. Isso faria com que qualquer instalação encontre os arquivos de cabeçalho necessários sem precisar editar manualmente os arquivos ou os sinalizadores do compilador.

Louis Charette
fonte
11
Resposta mais valiosa! Isso deve ser marcado como correto! Obrigado senhor!
Eltomato 10/11/19
Você salvou meu dia
ludovico
Essa é a melhor maneira de resolver o problema. Funcionou para mim. Thanks, Louis
Raja Mohammed
11
Para suporte ao PHP 7.4, você precisa instalar o XDebug 2.9 (não 2.7.2). Basta seguir estas instruções de instalação e depois de seguir make installtodas as etapas do capítulo "Suporte ativado no PHP" desta publicação. Lembre-se de que você pode ter um php.iniarquivo em um local diferente. Corra php --inipara descobrir onde e edite o que está sendo usado.
Dejv
Eu fui bom até o ./configurecomando. Eu continuo recebendo um no such file or directory: ./configure. Alguém mais se deparou com isso ou sou apenas o sortudo? : D
cbloss793 25/02
0

Se você estiver usando o brew, eu resolvo isso reinstalando o php e vinculando novamente:

brew reinstall php@7.3
brew link --overwrite php
jamespsterling
fonte
Não deu certo, cara.
Eric Chen
Infelizmente, as coisas de cerveja nem sempre funcionam como o esperado, dependendo das suas versões.
jamespsterling 14/04
-1

você pode encontrar instruções detalhadas com patches prontos para usar neste site: https://profilingviewer.com/installing-xdebug-on-catalina.html

user24525
fonte
11
As respostas que referenciam principalmente um site externo devem incluir um resumo das informações para que elas se tornem uma fonte primária e também uma referência. Isso ajudará a resposta a resistir ao teste do tempo.
Louis Charette
-2

Eu recomendo que você use "brew" para instalar o PHP e, em seguida, use a ferramenta "pecl" que vem com a versão instalada do PHP do brew para instalar o Xdebug.

Derick
fonte
Foi exatamente o que eu fiz. Ao tentar instalar Xdebug com pecl eu recebo o erro mencionado acima
Guenter
11
Isso significa que ele está pegando a ferramenta pecl errada - a instalada no seu Mac. Você precisa usar a bebida fornecida.
Derick
@Guenter essa dica resolveu seu problema? Estou tendo o mesmo problema e resolvi, brew install phpmas ainda estou recebendo o mesmo erro.
Carter Pape
Graças @Derick, este resolveu o meu probem
Guenter
11
pecl install xdebugtrabalhou para mim sob 10.15.3
Juanmi Sosso