cakephp调试

输出

cakephp中可以用debug方法进行输出,类似angular中的console.log();

1
2
$result = array('status' => 0, 'method' => 'index', 'data' => 'data', 'msg' => 'message');
debug($result);

运行后会输出:

1
2
3
4
5
6
[
    'status' => (int) 0,
    'method' => 'index',
    'data' => 'data',
    'msg' => 'message'
]

断点调试

1.把demo项目拉到本地
demo
把docker配置拉到本地,和demo放在同一目录下
docker

2.开启docker,然后在docker目录下运行

1
2
docker-compose build
docker-compose up -d

在docker desktop中 进入docker容器

php docker

运行命令编译项目

1
2
cd /var/www/html
composer install

3.vscode中安装PHP Debug插件

4.在php项目的.vscode目录下修改launch.json文件,写入以下内容。
如果没有就创建一个

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
    "version": "0.2.0",
    "configurations": [{
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/html/": "${workspaceRoot}"
            },
            "ignore": [
                "**/vendor/**/*.php"
            ],
        },
    ]
}

5.vscode中按F5开启调试,就能开始调试了

6.如果在vscode中无法打断点,进入vscode的设置中
左上角File->Preferences->Settings->Features->Debug
将Allow Breakpoints Everywhere勾上
php breakpoint

Tips

xdebug版本升级后,配置不一样,具体查看Upgrading from Xdebug 2 to 3
docker配置时,如果页面不能访问或者db连接不上,有可能是端口被占用了
不用xampp跑cakephp时,要将php.ini中修正下记内容

1
2
3
4
5
6
7
8
extension_dir = "ext"       :   extension_dir = "./ext"
;extension=intl             :   去除;
;extension=mbstring         :   同上
;extension=mysqli           :   同上
;extension=pdo_mysql        :   同上
;extension=pdo_pgsql        :   同上
;extension=pdo_sqlite       :   同上
;extension=pgsql            :   同上