macOSPHP7如何增加Xdebug

macOS系统php7增加Xdebug

成都创新互联服务项目包括银川网站建设、银川网站制作、银川网页制作以及银川网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,银川网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到银川省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

Apple在发布macOS High Sierra后,系统也终于自带了php v7.1,相比于之前,如果想使用php7,还得额外想办法( Homebrew 或者 php-osx )而言着实方便了不少。

但是,系统自带的PHP只有基础的配置,如果想做PHP开发,Xdebug还是必须的,以下就总结一下如何在macOS High Sierra中为系统自带的PHP增加Xdebug模块。【推荐:PHP7教程】

基础环境( macOS 及 PHP 信息)

  • macOS High Sierra: v10.13.3
  • PHP: v7.1.7

安装Xdebug

Xdebug官网安装文档中有MAC推荐的方式,鉴于系统自带的是PHP是v7.1.7,所以在选择的时候,需要选择php71-xdebug这个安装包。

另外由于brew中的php71-xdebug依赖于php71的,所以建议加上--without-homebrew-php这个参数,这样的话brew就会忽略安装php71

brew install php71-xdebug --without-homebrew-php

不过这个时候,或许你会碰到下面这样的报错:

phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:

提示缺失依赖,从而导致phpize无法正常工作,phpize是用来准备 PHP 扩展库的编译环境的,理论上系统自带的PHP应该是有phpize的,但是没有在/usr/include/php/*里面找到它需要的模块,并且检索/usr/include时发现这个目录根本不存在。

Google了一圈,解决问题,就需要在/usr/include中补全相关的内容,在OSX v10.10以前系统,需要手动做软链来解决:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include /usr/include

但是v10.11以后的系统重写了安全策略,所以会遇到权限问题(sudo也不行):

ln: /usr/include: Operation not permitted

不过好在Apple为开发人员准备了Xcode,这是一个很强大的工具,但是体积也很大(下载安装有点慢),而一般我们只需要它提供的Command Line Tools就够了,上面的问题,其实只要安装Command Line Tools就可以解决:

xcode-select --install

接下来,跟着提示做,安装、同意协议...

等待安装结束以后,再用 brew 来安装 php71-xdebug:

brew install php71-xdebug --without-homebrew-php

一切结束以后,brew会给出提示:

To finish installing xdebug for PHP 7.1:
  * /usr/local/etc/php/7.1/conf.d/ext-xdebug.ini was created,
    do not forget to remove it upon extension removal.
  * Validate installation via one of the following methods:
  *
  * Using PHP from a webserver:
  * - Restart your webserver.
  * - Write a PHP page that calls "phpinfo();"
  * - Load it in a browser and look for the info on the xdebug module.
  * - If you see it, you have been successful!
  *
  * Using PHP from the command line:
  * - Run `php -i "(command-line 'phpinfo()')"`
  * - Look for the info on the xdebug module.
  * - If you see it, you have been successful!

开启PHP的Xdebug

经过上面步骤,系统里面是有Xdebug了,但是在php.ini配置文件中不一定有,因此需要手动添加Xdebug的配置项:

[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.scream = 0
xdebug.show_local_vars = 1

然后就是重启php-fpm

# 关闭php-fpm
sudo killall php-fpm

# 启动php-fpm
sudo php-fpm

运行php -i "(command-line 'phpinfo()')" | grep xdebug后,你就可以看到关于Xdebug的配置内容了:

xdebug
...
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => On => On
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
xdebug.remote_timeout => 200 => 200
xdebug.scream => Off => Off
...

Visual Studio Code - PHP Debug

VSCode是目前最流行的开发工具之一,虽然轻量,但是对标各类IDE毫不逊色,微软良心之作,通过安装不同的插件可以扩展它的能力,其中有一款 PHP Debug 的插件,可以作为Xdebug的桥梁,方便直接通过Xdebug调试PHP,官方的描述十分贴切:

官网的指导也写的相当不错:

这里需要注意的是它推荐开启Xdebug配置项中的remote_autostart这一项。

当前名称:macOSPHP7如何增加Xdebug
本文链接:http://www.36103.cn/qtweb/news33/3133.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联