当前位置: 首页 > 后端技术 > PHP

Xdebug

时间:2023-03-29 22:18:45 PHP

在苹果发布macOSHighSierra后添加到macOS系统PHP7中,系统终于自带了phpv7.1。与之前相比,如果你想使用php7,你必须找到一个额外的方式(Homebrew或php-osx)并且非常方便。但是系统自带的PHP只有基本的配置。如果要做PHP开发,Xdebug还是必不可少的。下面总结一下如何在macOSHighSierra中给系统自带的PHP添加Xdebug模块。基本环境(macOS和PHP信息)macOSHighSierra:v10.13.3PHP:v7.1.7安装XdebugXdebug官网安装文档有MAC推荐的方法,由于系统自带PHPv7.1.7,所以在选择的时候,需要选择安装包php71-xdebug。另外,由于brew中的php71-xdebug依赖php71,建议加上参数--without-homebrew-php,这样brew会忽略php71的安装。brewinstallphp71-xdebug--without-homebrew-php但是这时候你可能会遇到如下错误:phpizegrep:/usr/include/php/main/php.h:Nosuchfileordirectorygrep:/usr/include/php/Zend/zend_modules.h:Nosuchfileordirectorygrep:/usr/include/php/Zend/zend_extensions.h:NosuchfileordirectoryConfiguringfor:PHPApiVersion:ZendModuleApiNo:ZendExtensionApiNo:提示缺少依赖项,导致phpize无法正常工作。phpize用于准备PHP扩展库的编译环境。理论上系统自带的PHP应该有phpize,但是在/usr/include/php/*模块中并没有找到它需要的,搜索/usr/include发现这个目录根本不存在。google了一圈后,解决问题需要完善/usr/include中的相关内容。在OSXv10.10之前的系统,需要手动做一个软链接来解决:sudoln-s/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/usr/include但是v10.11之后的系统重写了安全策略,所以会遇到权限问题(sudo不行):ln:/usr/include:Operationnotpermitted还好苹果已经为Xcode准备好了开发商。这是一个非常强大的工具,但是也非常庞大(下载安装有点慢),一般我们只需要它提供的命令行工具就够了。以上问题可以通过安装CommandLineTools解决:xcode-select--install接下来按照提示,安装,同意协议...安装完成后,使用brew安装php71-xdebug:brewinstallphp71-xdebug--without-homebrew-php一切结束后brew会提示:TofinishinstallingxdebugforPHP7.1:*/usr/local/etc/php/7.1/conf.d/ext-xdebug.iniwas创建后,不要忘记在删除扩展时将其删除。*通过以下方法之一验证安装:**从网络服务器使用PHP:*-重新启动您的网络服务器。*-编写一个调用“phpinfo();”的PHP页面*-在浏览器中加载它并在xdebug模块上查找信息。*-如果你看到它,你有已经成功了!**从命令行使用PHP:*-运行`php-i"(command-line'phpinfo()')"`*-在xdebug模块上查找信息。*-如果你看到它,你就成功了!打开PHP的Xdebug经过以上步骤,系统中有Xdebug,但php.ini配置文件中不一定有,所以需要手动添加Xdebug配置项:[xdebug]zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"xdebug.remote_enable=1xdebug.remote_autostart=1xdebug.remote_connect_back=1xdebug.remote_port=9000xdebug.scream=0xdebug.show_local_vars=1然后重启php-fpm:#Closephp-fpmsudokillallphp-fpm启动php-fpmsudophp-fpmrunphp-i"(command-line'phpinfo()')"|grepxdebug,可以看到Xdebug的配置内容:xdebug...xdebug.remote_autostart=>On=>Onxdebug.remote_connect_back=>On=>Onxdebug.remote_cookie_expire_time=>3600=>3600xdebug.remote_enable=>打开=>Onxdebug.remote_handler=>dbgp=>dbgpxdebug.remote_host=>localhost=>localhostxdebug.remote_log=>无值=>无值xdebug.remote_mode=>req=>reqxdebug.remote_port=>9000=>9000xdebug.remote_timeout=>200=>200xdebug.scream=>Off=>Off...VisualStudioCode-PHPDebugVSCode是最流行的开发工具之一,虽然它是轻量级的,不输于各种IDE。微软的良心工作可以通过安装不同的插件来扩展它的能力。其中有一个PHPDebug插件,可以作为Xdebug的桥梁,方便直接通过Xdebug调试PHP,官方的描述很贴切:PHPDebugAdapterforVisualStudioCode官网的指导也挺好的:InstallXDebug我强烈推荐你做一个简单的test.php文件,放一个phpinfo();语句,然后复制输出并将其粘贴到XDebug安装向导中。它将对其进行分析并为您提供适合您的环境的安装说明。简而言之:在Windows上:为您的PHP版本、体系结构(64/32位)、线程安全(TS/NTS)和VisualStudio编译器版本下载适当的预编译DLL,并将其放置在您的PHP扩展文件夹中。在Linux上:下载源代码作为tarball或使用git克隆它,然后编译它。通过添加zend_ex配置PHP以使用XDebugtension=path/to/xdebugtoyourphp.ini.Thepathofyourphp.iniisshowninyourphpinfo()outputunder"LoadedConfigurationFile".在php.ini中启用远程调试:[XDebug]xdebug.remote_enable=1xdebug.remote_autostart=1除了remote_autostart,还有其他方法可以告诉XDebug连接到远程调试器,例如cookie、查询参数或浏览器扩展。我推荐remote_autostart,因为它“正常工作”。还有其他各种类似的选项,端口(默认9000),请参阅远程调试的XDebug文档了解更多信息。如果您正在进行Web开发,请不要忘记重新启动您的Web服务器以重新加载设置通过检查您的phpinfo()输出的XDebug部分来验证您的安装。这里需要注意的是,它建议在Xdebug配置项中启用remote_autostart。经过以上操作,你应该可以像Demo一样在VSCode中调试PHP了。本文首发于我的个人博客,如有更新,可查看原文。

最新推荐
猜你喜欢