跳到主要内容

PHP+phpstorm+xdebug 环境配置

php 环境搭建是一件相当麻烦的事情,本篇博客记录了在Mac 系统下的环境配置。

Win上的php 环境搭建,建议使用XAMPP,一键搭建,而且自带xdebug.dll,用过就知道。Mac 上的php 环境,我一开始也使用了 XAMPP 作为环境,但是发现Mac 上的是阉割版的,也没有xdebug。

目前介绍的环境搭建方法是: brewpecl

PHP 安装

安装过程

Mac 上是自带php和Apache的

$ whereis php
/usr/bin/php

我这里准备用brew 装一个最新的

$ brew search php
==> Formulae
brew-php-switcher php@7.2 phpmyadmin
php php@7.3 ✔ phpstan
php-code-sniffer phplint phpunit
php-cs-fixer phpmd

==> Casks
eclipse-php netbeans-php phpstorm
(base)

安装最新的 php 7.3

$ brew install php@7.3
# 安装后,我们需要添加环境变量
php@7.3 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have php@7.3 first in your PATH run:
echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc

For compilers to find php@7.3 you may need to set:
export LDFLAGS="-L/usr/local/opt/php@7.3/lib"
export CPPFLAGS="-I/usr/local/opt/php@7.3/include"

To have launchd start php@7.3 now and restart at login:
brew services start php@7.3
Or, if you don't want/need a background service you can just run:
php-fpm

brew 安装遇到的问题

brew 安装php@7.3 的过程中,中间一条命令是 brew clean 产生了问题

$ brew cleanup
Warning: Skipping opam: most recent version 2.0.3 not installed
Warning: Skipping python: most recent version 3.7.2_2 not installed
Warning: Skipping sqlite: most recent version 3.27.1 not installed
Error: Permission denied @ unlink_internal - /usr/local/lib/node_modules/@angular/cli/node_modules/.bin/in-install

既然说我们权限不够,第一反应是使用 sudo 命令,但是brew 不允许用户这么做。

经过查询后,可以使用如下命令,可以给没有权限的文件夹,更改权限。

$ sudo chown -R "$(whoami)":admin /usr/local # 这里文件夹填写需要的

安装 xdebug

xdebug 的安装是比较麻烦的,若是没有xdebug 需要的步骤复制很多。涉及到自己编译(自己编译的话,由于计算机环境不同又会产生很多问题)

XAMPP 环境的安装

这里XAMPP环境的话我建议参考下面的教程

Mac下XAMPP+PhpStorm中集成xdebug

简单的描述一下过程就是:

生成 phpinfo ,复制到 xdebug 官网官网下载xdebug.so 下载xdebug.tgz

解压文件: tar -xvzf xdebug.tgz

编译过程官方教程(有坑)

  1. 坑一:使用对phpize 命令。如果你电脑中安装的是XAMPP环境,你需要使用XAMPP环境的phpize

    /Applications/XAMPP/xamppfiles/bin/phpize

    坑二:出现Cannot find autoconf 错误

    brew install autoconf

    坑三:./configure 编译问题

    ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config

  2. make 获得 xdebug.so 文件

Pecl 方法安装(采用的方法)

我们使用的较为简单的方法,就是使用pecl命令,如果我们成功的安装了 php 的话,pecl 是自带的。pecl 相当于为我们省去了编译的过程,也帮我们避免了很多的坑

pecl 之于 php 相当于 pip 之于 python 和 npm 之于 node.js,管理的是 php 的扩展(或者叫插件?)

配置php.ini

找到php.ini 地址

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.3
Loaded Configuration File: /usr/local/etc/php/7.3/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.3/conf.d/ext-opcache.ini

添加如下代码

[xdebug]
zend_extension=/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so # xdebug 存放路径
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_mode="req"
xdebug.remote_host=localhost
xdebug.remote_port=9000 # 端口号,记住
xdebug.remote_handler="dbgp"
xdebug.idekey="PhpStorm"
xdebug.profiler_enable = Off

查看xdebug 是否成功安装,使用 php -m 查看所有已安装的扩展,存在xdebug 则表明安装成功。当然也可以使用 phpinfo() 查看xdebug。

注意: 重启Apache 服务才能看到 phpinfo 输出的情况

配置phpstorm 环境

xdebug 在phpstorm 中的设置,有大量图,不想重复造轮子。看下面两个教程足够了。

史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

Mac下XAMPP+PhpStorm中集成xdebug

实践下来,由于我只是作为php 后端开发,不需要与前端交互的话,我这里只需要保证下面的端口设置正确即可。

后记

真实工作环境中,其实由于项目是很大的,实际上没有用到xdebug的机会(主要通过日志排查问题)。我这里安装xdebug 主要是想要通过逐步调试的过程,更好的理解php 语言,协程的使用方法等。

参考资料

xdebug 官方安装教程

brew cleanup 问题解决方法--stackoverflow