资讯专栏INFORMATION COLUMN

Mac OS xDebug PhpStorm 快速配置

forrest23 / 1600人阅读

摘要:确定环境的干净。这一步要优化的话应该是做一个类似缓存的机制,对于这种配置加载的性能提升所以我们在调试必然是要在这里配置环境的接口。

前言

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

一、brew 安装 php

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

确定 brew 环境的干净。

确定 php 版本,这里是用 php54,如果有多版本切换的需求可以安装 php-versionbrew-php-select,前者是用 brew 可以安装,后者依赖 npm

安装 php54-xdebug,因为 xdebug 会有一个映射版本。

// 检测一下 brew 环境
brew doctor
// 升级一下 brew
brew update
// 查看 brew 拥有的 tap
brew tap
// 查看 brew 已安装的工具
brew ls

doctor => 检测如下:

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

如果你发现是用 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 的监听端口修改

然后设置 PHP dbgp 代理

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

设置 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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30440.html

相关文章

  • PhpStorm连接docker容器内的php XDebug进行断点调试

    摘要:连接容器内的进行断点调试进行断点调试尽管不像其他语言那样方便,但是有些是有确实有其用处,比如调试循环内的数据异常时。 PhpStorm连接容器内的XDebug进行断点调试 php进行断点调试尽管不像其他语言那样方便,但是有些是有确实有其用处,比如调试循环内的数据异常时。在php于phpstorm都安装在同一环境下时,配置phpstorm的xdebug调试并不是多困难的事情,但是如果你使...

    XGBCCC 评论0 收藏0
  • Docker快速搭建一套PHP、Nginx、MySQL、Redis、Xdebug、Memcached

    摘要:痛点如何简单迅速地初始化一个全新的开发环境呢笔者在尝试起一个新项目时,往往会陷入重新建立一套环境的繁琐事当中。架构本片文章搭建出来的环境如上图。网络这部分,为了便于配置就手动分配了。配置开启记录了一般性的查询日志,便于程序。 痛点 如何简单迅速地初始化一个全新的PHP开发环境呢? 笔者在尝试起一个新web项目时,往往会陷入重新建立一套Docker环境的繁琐事当中。我想大家在开始做一个新...

    kk_miles 评论0 收藏0
  • Docker快速搭建一套PHP、Nginx、MySQL、Redis、Xdebug、Memcached

    摘要:痛点如何简单迅速地初始化一个全新的开发环境呢笔者在尝试起一个新项目时,往往会陷入重新建立一套环境的繁琐事当中。架构本片文章搭建出来的环境如上图。网络这部分,为了便于配置就手动分配了。配置开启记录了一般性的查询日志,便于程序。 痛点 如何简单迅速地初始化一个全新的PHP开发环境呢? 笔者在尝试起一个新web项目时,往往会陷入重新建立一套Docker环境的繁琐事当中。我想大家在开始做一个新...

    Coding01 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<