tl; dr
A Apple decidiu remover o arquivo de cabeçalhos /usr/include
e o macOS_SDK_headers_for_macOS_10.14.pkg
pacote. Para instalar o Xdebug, você precisará compilar o Xdebug manualmente com a referência correta em ambos phpize
e 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/include
no 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 phpize
para 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.
make install
todas as etapas do capítulo "Suporte ativado no PHP" desta publicação. Lembre-se de que você pode ter umphp.ini
arquivo em um local diferente. Corraphp --ini
para descobrir onde e edite o que está sendo usado../configure
comando. Eu continuo recebendo umno such file or directory: ./configure
. Alguém mais se deparou com isso ou sou apenas o sortudo? : DSe você estiver usando o brew, eu resolvo isso reinstalando o php e vinculando novamente:
fonte
você pode encontrar instruções detalhadas com patches prontos para usar neste site: https://profilingviewer.com/installing-xdebug-on-catalina.html
fonte
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.
fonte
brew install php
mas ainda estou recebendo o mesmo erro.pecl install xdebug
trabalhou para mim sob 10.15.3