我试图在OS X 10.15上安装Xdebug并遇到以下问题:
/private/tmp/pear/install/xdebug/xdebug.c:25:10:致命错误:找不到“ php.h”文件
我试图解决这里描述的问题:在MacOs Mojave上安装xdebug-找不到'php.h'文件
不幸的是,在此目录中找不到头文件: /Library/Developer/CommandLineTools/Packages
有什么想法可以获取OS X 10.15的当前头文件吗?
我试图在OS X 10.15上安装Xdebug并遇到以下问题:
/private/tmp/pear/install/xdebug/xdebug.c:25:10:致命错误:找不到“ php.h”文件
我试图解决这里描述的问题:在MacOs Mojave上安装xdebug-找不到'php.h'文件
不幸的是,在此目录中找不到头文件: /Library/Developer/CommandLineTools/Packages
有什么想法可以获取OS X 10.15的当前头文件吗?
Answers:
苹果公司决定删除页眉文件/usr/include
和macOS_SDK_headers_for_macOS_10.14.pkg
包。要安装Xdebug,您必须手动在phpize
和中使用正确的引用编译Xdebug make
。
长话短说,Apple决定对/usr/include
MacOS Catalina 进行核对,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网站下载源。
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
接下来,我们需要制作一个副本,phpize
以便我们可以编辑include路径:
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将阻止它。但是不用担心,我们将在下一步中手动进行处理。仍然需要进行make install,因为它将签名* .so文件。
接下来,我们将可执行文件移到安全的地方。我用/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
。这样一来,任何安装都无需手动编辑文件或编译器标志即可找到必要的头文件。
make install
执行本文的“在PHP中启用支持”一章的所有步骤即可。请记住,php.ini
文件可能位于其他位置。运行php --ini
以找出位置,然后编辑正在使用的位置。
./configure
命令我一直很好。我不断收到no such file or directory: ./configure
。其他人遇到这个问题还是我只是幸运者?:D
如果您使用brew,我可以通过重新安装php并重新链接来解决此问题:
brew reinstall php@7.3
brew link --overwrite php
您可以在此站点上找到准备使用补丁的详细说明:https : //profilingviewer.com/installing-xdebug-on-catalina.html