前言
在网上找了一些相关配置的例子,觉得很多比较复杂,并且配置项过于多了,有很多冗余并不是最开始就需要的配置,所以写一下记录,也方便以后自己查阅。
一、brew 安装 php
在 Mac OS 这边不需要手动去下载编译打包,直接使用 brew
进行快捷安装会比较方便管理,对于最原始的打包安装方式也可以,不过需要自己去创建一些 link
所以这里只记载 brew
的方式。
确定 brew 环境的干净。
确定 php 版本,这里是用 php54,如果有多版本切换的需求可以安装
php-version
和brew-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.ini
中 php54-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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。