Laravel 配置 valet, PHPStorm, xdebug, PHPUnit, qcachegrind (Mac) 环境

  • 可使用 command+, 快捷键打开 PHPStorm Preferences页面
  • 在 Preferences 页面可以直接搜索要配置的项目
  • 可使用 control+alt+d 快捷键打开 PHPStorm Debug 设置

一、配置单 php 文件的 Debug

1、PHPStorm: Preferences > Languages & Frameworks > PHP
    > PHP language level: 7.2
    > CLI interpreter: PHP 7.2.4

2、PHPStorm: Run > Edit Configurations.. > + > PHP Script, 添加 php 文件。
    或直接在要调试的 php 文件中,`control+alt+d` > xxx.php(PHP Script)

二、配置 Laravel 的 Debug

1、修改 xdebug.ini

xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001 ;xdebug的端口,默认为9000,我习惯用9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM

如需开启性能分析,还需添加下列信息,开启后会严重拖慢 laravel 打开速度

zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
zend_debugger.httpd_uid=-1
xdebug.trace_format = 2
xdebug.auto_trace = on
xdebug.auto_profile = on ;打开性能分析
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = 1
xdebug.trace_output_dir = /Users/seekerliu/Documents/xdebug/trace ;trace生成的文件目录, 需配置成自己的
xdebug.profiler_output_dir=/Users/seekerliu/Documents/xdebug ;性能分析生成的文件目录, 需配置成自己的
xdebug.trace_output_name = trace.%c.%p
xdebug.show_exception_trace = On ;开启异常跟踪
xdebug.show_local_vars = 0

xdebug.profiler_output_name=cachegrind.out.%s
xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.dump.COOKIE = *
xdebug.dump.SESSION = *
xdebug.var_display_max_data = 4056
xdebug.var_display_max_depth = 5

2、 重启 php-fpm

➜ valet restart
或 找到 php-fpm master progress 进程 pid (例如 2345) 后
➜ ps aux | grep php-fpm
➜ kill -USR2 2345

3、配置 PhpStorm

1) PHPStorm: Preferences > DBGp Proxy > IDE key: PHPSTROM > PORT:9001

2) Languages & Frameworks > PHP > Debug > Xdebug > Debug port: 9001

3) PHPStorm: Run > Edit Configurations.. > + > PHP Web Page
> 填写 Name, Configuration: 选择 Server, 填写 Start URL。
> 添加 Server 时,填写 Name, Host, Port, Debugger:Xdebug。
> 设置 path mappings: √ Use path mappings, 
> 编辑 File/Directory(本地项目文件) 与 Absolute path on the server(服务器上的文件绝对路径) 的映射关系,例如:
    File/Directory: /Users/seekerliu/Documents/sxmsV2
    Absolute path on the server: /Users/seekerliu/Documents/sxmsV2

4、对于 valet 项目,还需配置 valet 路径至 include path:

PHPStorm: Project Window(左边栏项目资源目录,可使用 command+1 快捷键打开) 
> Extrenal Libraries > Config PHP Include Paths
> Add 
> /Users/seekerliu/.composer/vendor/laravel/valet (换成你自己的)

5、监听来自页面的 xdebug 请求,即浏览器中打开网页后自动跳转到 PHPStorm 的断点上:

首先在 PHPStorm 中开启监听:

 Run > Start Listening for PHP Debug Connections

然后再 Web 端开启 XDEBUG_SESSION:

方法一:

在请求 URL 中添加 XDEBUG_SESSION_START 参数(可以为任意值, 例如:XDEBUG_SESSION_START=1),

代码中设置断点,然后访问URL:

http://website.test/?XDEBUG_SESSION_START=1

即可进入设置过的断点。

方法二:

cookie 中设置 XDEBUG_SESSION。使用方法一就会自动设置此 cookie 值,有效期 1小时。

Laravel 项目中可以如下配置:

\App\Providers\AppServiceProvider.class.php

public function register()
{
    // 各类开发环境中使用的配置
    if ($this->app->environment() == 'local') {
        // 注册各类开发时用到的 package
        // $this->app->register('Seekerliu\ViewComposerGenerator\ServiceProvider');

        // 开启 XDEBUG_SESSION
        // PHPStorm 中需执行:Run > Start Listening for PHP Debug Connections
        if(!request()->hasCookie('XDEBUG_SESSION')) {
            $cookie = \Cookie::forever('XDEBUG_SESSION', 1);
            \Cookie::queue($cookie);
        }
    }
}

三、配置 PHP Unit

1、安装phpunit

➜ wget https://phar.phpunit.de/phpunit.phar
➜ chmod +x phpunit.phar
➜ php phpunit.phar --version
>> PHPUnit 6.3.0 by Sebastian Bergmann and contributors.

➜ sudo mv phpunit.phar /usr/local/bin/phpunit
➜ phpunit --version
>> PHPUnit 6.3.0 by Sebastian Bergmann and contributors.

2、配置 ~/.bash_profile

# PHP Unit
t() {
  if [ -f vendor/bin/phpunit ]; then
    vendor/bin/phpunit "$@"
  else
    phpunit "$@"
  fi
}

这样在 Terminal 中可以使用 t 直接运行。

➜ t  --stderr

3、配置 PHPStorm 中 phpunit 路径

PHPStorm: Preferences > Test Frameworks > + > PHP Unit Local 
> Path to phpunit.phar: /usr/local/bin/phpunit
> Default configuration file: /Laravel项目目录/phpunit.xml 
> Default bootstrap file: /Laravel项目目录/vendor/autoload.php

这样就可以在 PHPStorm 中对 Laravel Test 文件使用 control+alt+d 执行 PHPUnit 了。

四、安装qcachegrind(mac下的图形化性能分析软件)

➜ brew install graphviz
➜ brew install qcachegrind
➜ qcachegrind

还可以把 qcachegrind 添加到应用程序中:

➜ cp -r /usr/local/Cellar/qcachegrind/17.04.1(版本号)/qcachegrind.app ~/Applications

解决 Call Graph 无法使用的问题:

sudo ln -s /usr/local/bin/dot /usr/bin/dot

以上命令会报错,因为mac系统有完整性保护,mac系统一些重要的系统目录禁止修改,即使是切换到root也不行。

这时,可暂时修改:

1、关机后,开机的同时或者在听到开始音的同时,按住Command+R键
2、打开 Terminal 窗口输入命令:csrutil disable 即可;可以查看状态:csrutil status
3、重启电脑后再执行命令:sudo ln -s /usr/local/bin/dot /usr/bin/dot
4、重复 1 步骤,2 步骤命令替换为:csrutil enable  恢复默认的mac权限
本作品采用《CC 协议》,转载必须注明作者和本文链接
原创。 所有 Laravel 文章均已收录至 Github laravel-tips 项目。
Ίκαρος
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

大佬,能不能出篇文章介绍一下 qcachegrind 怎么使用呢?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!