08月22, 2016

Mac OS xDebug PhpStorm 快速配置

前言

在网上找了一些相关配置的例子,觉得很多比较复杂,并且配置项过于多了,有很多冗余并不是最开始就需要的配置,所以写一下记录,也方便以后自己查阅。

一、brew 安装 php

在 Mac OS 这边不需要手动去下载编译打包,直接使用 brew 进行快捷安装会比较方便管理,对于最原始的打包安装方式也可以,不过需要自己去创建一些 link 所以这里只记载 brew 的方式。

  1. 确定 brew 环境的干净。
  2. 确定 php 版本,这里是用 php54,如果有多版本切换的需求可以安装 php-versionbrew-php-select,前者是用 brew 可以安装,后者依赖 npm
  3. 安装 php54-xdebug,因为 xdebug 会有一个映射版本。
// 检测一下 brew 环境
brew doctor
// 升级一下 brew
brew update
// 查看 brew 拥有的 tap
brew tap
// 查看 brew 已安装的工具
brew ls

doctor => 检测如下:

brew doctor

tap => 查看如下,主要是看一下 homebrew/php,不然到时候会输入全名比较麻烦:

brew tap

如果你发现是用 josegonzalez/php 出错,那么就可以 brew untap josegonzalez/php,因为之后应该都迁移到了统一的 homebrew/php 库中,然后需要检查 .zshrc ( 或者 .bashrc ) 文件的 PATH,记得重新修改为 homebrew/php。

brew install php54 php54-xdebug

这里安装比较简单,主要是要记得看清楚安装完后的配置信息提示,重要信息:

  • php.ini
  • auto start php
  • php 相关的一些路径

brew 的常规目录:

/usr/local/bin
/usr/local/etc
/usr/local/opt

这里安装应该不会出现什么问题,接下来配置 Apache 2 这里我用的是 Mac OS 自带的,如果有 Nginx 玩家也是一样的。

二、配置 Apache

sudo vi /etc/apache2/httpd.conf
// 配置需要的解析模块
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

这里主要会出现的问题就是之前已经有解析模块的情况,会默认使用最开始定义的解析模块,所以需要仔细查看是否定义重复了。

接下来是验证一下我们系统的 php 版本号和 php 解析是否正确:

Apache 的一些具体配置可以查看我之前写的 Mac OS X 10.9配置AMP环境

// 默认 Mac 的 php 位于 /usr/bin/php
// 如果这里的版本号不是 php54,检查 PATH
php -v

// curl 一下配置
curl -IL http://127.0.0.1:80

// 正常情况应该返回,主要是 php 的版本
HTTP/1.1 200 OK
Date: Sun, 21 Aug 2016 19:14:58 GMT
Server: Apache/2.4.18 (Unix) PHP/5.4.45
X-Powered-By: PHP/5.4.45
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: PHPSESSID
Content-Type: text/html

当然,你也可以在网站目录建一个 php 文件,然后 phpinfo() 看一下具体配置。

三、配置 php.ini

因为 php 文件是动态的,所以 Web 服务器必然会去加载 php 解析器模块去理解文件,然后 php 的解析器的一些配置在 php.ini 中,所以该解析器就会去加载这个文件,最后得到执行环境。(这一步要优化的话应该是做一个类似缓存的机制,对于这种配置加载的性能提升)

所以我们在调试 php 必然是要在 php.ini 这里配置环境的接口。直接开始:

; prefix => /usr/local/etc/php/5.4/
; 该参数是要加载的 xdebug.so 模块,具体是 ext 可以到
; /usr/local/etc/php/5.4/ext 去查看详情,默认会有扩展的目录
; 该配置配置于:conf.d/ext-xdebug.ini
; zend_extension = ext/xdebug.so
; 远程是否可以用,必须
xdebug.remote_enable = on
; 远程的 host,默认本地,然后可以配置为 vagrant 的地址
xdebug.remote_host = 127.0.0.1
; 使用非 9000 默认端口,9000 端口我失败了,所以最好改动一下,避免 fuck
xdebug.remote_port = 9010
; 使用 dbgp 做 80 端口代理
xdebug.remote_handler = dbgp
; 这里的 的 key 必须和到时候 IDE 中的一致
xdebug.idekey = PHPSTORM
; 输出的日志文件,个人觉得很重要
xdebug.remote_log = /tmp/xdebug.log

2016-09-05 更新,主要是 xdebug.ini 相关

相关报错信息:

Failed loading ext/xdebug.so: dlopen(ext/xdebug.so, 9): image not found

(1)注释 php.ini 文件中的 zend_extension = ext/xdebug.so 改到 /usr/local/etc/php/5.4/conf.d/ext-xdebug.ini 中进行配置 (2)注释 ext-xdebug.iniphp54-xdebug 的相关配置 (3)最后 ext-xdebug.ini 中配置如下:

[xdebug]
; prefix => /usr/local/etc/php/5.4/
zend_extension = /usr/local/opt/php54-xdebug/xdebug.so

基本上上面的文件是刚需吧,然后必须要重启 Apache

sudo apachectl restart

四、配置 PhpStorm 工具

  • 先把 xdebug 的监听端口修改

xDebug

  • 然后设置 PHP dbgp 代理

这里必须和 php.ini 中的 key id 对应上哦,代理的是服务器地址和端口号

PHP KEY

  • 设置 servers 目录和服务器信息 这里目录一定要设置正确,绝对目录映射

目录

  • 对 php 的基本设置,和 java jar 差不多的东西

(1) 先点开详情

开始

(2) 选择 php 的执行器目录

这里我选择的是软连接的目录,这样比较方便,可以在下面这里找到。 目录 配置结果,这里还可以检查一下 php.ini 改动正确没有: 选择

(3) 配置 PHP Web 应用的信息,主要是映射地址和默认浏览器

入口 详情

(4) 启动调试模式

  • 先打开最右边像电话一样的东西(应该是连通监听,如果没有高亮就等一会,phpstorm 初始化)
  • 选择我们配置的 Php Web Application
  • 点击爬虫(调试按钮)

启动调试

(5) 打个断点测试一下

断点测试

虽然比 Node 那边调试起来比较麻烦,不过能看到变量和详细信息还是值得,原理和 Chrome Listener 基本差不多,大家也可以对比配置。

本文链接:http://www.60sky.com/post/phpstorm-xdebug.html

-- EOF --

Comments