tl; dr
Apple decidió eliminar el archivo de encabezados /usr/include
y el macOS_SDK_headers_for_macOS_10.14.pkg
paquete. Para instalar Xdebug, tendrá que compilar manualmente Xdebug con la referencia correcta en ambos phpize
y make
.
Para más detalles, escribí un artículo de blog sobre el problema y la solución.
Para resumir, Apple decidió atacar /usr/include
a MacOS Catalina, que ha sido la ubicación predeterminada para el archivo de encabezado C para siempre en sistemas UNIX. Intentar instalar a través de PEAR / PECL devolverá un error ya que el compilador buscará los archivos de encabezados necesarios /usr/include
. Entonces, la solución es compilar Xdebug manualmente, especificando manualmente la ubicación real de los archivos de encabezado, que todavía proporciona Xcode, solo en una ubicación diferente.
Primero, asegúrese de que Xcode esté instalado, incluidas las herramientas de línea de comandos. El siguiente comando mostrará la ubicación del SDK predeterminado:
$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
El encabezado que desee ( php.h
) estará entonces en /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main
.
Obteniendo fuente
Vamos a compilar 2.7.2 , para obtener el código fuente de Git. Alternativamente, puede descargar la fuente del sitio Xdebug .
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
phpize
A continuación, debemos hacer una copia phpize
para poder editar la ruta de inclusión:
cp /usr/bin/phpize .
nano ./phpize
Encuentra esta línea:
includedir="`eval echo ${prefix}/include`/php"
... y reemplazarlo con esta línea:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Ejecutar phpize
:
./phpize
Ahora debería ver algo como esto:
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
Configurar y construir
Ahora podemos configurar:
./configure --enable-xdebug
... y ejecute make utilizando nuestra ubicación personalizada del SDK definida como banderas del 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'
Podría ver alguna advertencia, solo ignórela por ahora. Finalmente, necesitaremos ejecutar:
make install
Nuevamente, este comando fallará porque no puede mover la extensión al lugar correcto. SIP lo evitará. Pero no se preocupe, nos ocuparemos de eso manualmente en el siguiente paso. todavía se requiere hacer la instalación ya que firmará el archivo * .so.
Soporte habilitado en PHP
A continuación, movemos el ejecutable a un lugar seguro. Yo 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
Luego editamos la configuración de PHP para habilitar Xdebug. Simplemente edita php.ini
:
sudo nano /etc/php.ini
Y agregamos lo siguiente en la 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 el servidor integrado para asegurarse:
sudo apachectl restart
Y finalmente prueba todo salió bien:
php -i | grep "xdebug support"
Si el comando anterior no devuelve nada, entonces Xdebug no está disponible en su instalación. Regrese los pasos para descubrir lo que falta.
EDITAR
Una solución más completa sería editar el resultado de php-config --include-dir
, que regresa /usr/include/php
. Eso haría que cualquier instalación encuentre los archivos de encabezado necesarios sin tener que editar manualmente los archivos o los indicadores del compilador.