在MacOS Catalina 10.15上安装Xdebug

时间:2019-10-10 07:36:48

标签: xcode macos xdebug macos-catalina

我试图在OS X 10.15上安装Xdebug并遇到以下问题:

  

/private/tmp/pear/install/xdebug/xdebug.c:25:10:致命错误:找不到“ php.h”文件

我试图解决此处描述的问题:Installing xdebug on MacOs Mojave - 'php.h' file not found

不幸的是,在以下目录中找不到头文件:/Library/Developer/CommandLineTools/Packages

有什么想法可以获取OS X 10.15的当前头文件?

5 个答案:

答案 0 :(得分:14)

tl; dr

Apple决定删除/usr/includemacOS_SDK_headers_for_macOS_10.14.pkg程序包中的头文件。要安装Xdebug,您必须手动在phpizemake中使用正确的引用编译Xdebug。

有关更多详细信息,我写了一篇有关the issuethe solution

的博客文章

长话短说,Apple决定在MacOS Catalina中对/usr/include进行核对,MacOS Catalina在UNIX系统中一直是C头文件的默认位置。尝试通过PEAR / PECL安装将返回错误,因为编译器将在/usr/include中查找必要的头文件。因此,解决方案是手动编译Xdebug,手动指定头文件的实际位置,这些头文件仍然由Xcode提供,位于其他位置。

首先,确保已安装Xcode,包括命令行工具。以下命令将显示默认SDK的位置:

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

您想要的标题(php.h)将位于/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main中。

获取源文件

让我们编译 2.7.2 ,从git获取源代码。或者,您可以从Xdebug site下载源。

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

phpize

接下来,我们需要制作一个副本phpize,以便我们可以编辑包含路径:

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

找到此行:

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

...并将其替换为此行:

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

运行phpize

./phpize

您现在应该看到类似这样的内容:

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

配置和构建

我们现在可以配置:

./configure --enable-xdebug

...并使用定义为编译器标志的自定义SDK位置运行make:

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'

可能会看到一些警告,请暂时将其忽略。最后,我们需要运行:

make install

同样,此命令将失败,因为它无法将扩展名移到正确的位置。 SIP将阻止它。但是不用担心,我们将在下一步中手动进行处理。仍然需要进行安装,因为它将签名* .so文件。

在PHP中启用了支持

接下来,我们将可执行文件移到安全的地方。我使用/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

然后,我们编辑PHP配置以启用Xdebug。只需编辑php.ini

sudo nano /etc/php.ini

然后在底部添加以下内容:

[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

重新启动内置服务器以确保:

sudo apachectl restart

最后测试一切正常:

php -i | grep "xdebug support"

如果以上命令未返回任何内容,则说明Xdebug在您的安装中不可用。返回步骤以找出缺少的内容。


编辑

更完整的解决方法是编辑php-config --include-dir的结果,该结果返回/usr/include/php。这样一来,任何安装都无需手动编辑文件或编译器标志即可找到必要的头文件。

答案 1 :(得分:1)

当我尝试在 MacOS Catalina 10.15 中安装 xdebug 时出现错误:

pecl install xdebug-3.0.1

错误:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: fatal error: 'php.h' file not found

这是因为 Apple 决定删除 /usr/include 中的头文件,就像您在其他答案中看到的那样。

然后我将配置添加到 .bash_profile,在控制台中执行这些行:

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/php@7.3/lib"
export CPPFLAGS="-I/usr/local/opt/php@7.3/include"
source ~/.bash_profile

之后,您可以尝试使用 pecl 再次安装 xdebug:

pecl install xdebug-3.0.1

注意:以前我已经用“brew”安装了 PHP 7.3。您应该调整 php 和 xdebug 版本,在上面几行中,添加您喜欢的版本。

答案 2 :(得分:0)

如果您使用brew,我可以通过重新安装php并重新链接来解决此问题:

brew reinstall php@7.3
brew link --overwrite php

答案 3 :(得分:-1)

您可以在此站点上找到准备使用补丁的详细说明:https://profilingviewer.com/installing-xdebug-on-catalina.html

答案 4 :(得分:-2)

我建议您使用“ brew”安装PHP,然后使用Brew的PHP安装版本随附的“ pecl”工具安装Xdebug。