PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

时间:2024-05-16 19:37:08

前言:

1、自己摸索安装

2、快速安装

安装这个扩展是由于Zephir 编译不能始终通过,迫不得已啊,使用Zephir写扩展,总是出现以下错误:

www@ubuntu1:~/phalcon-zephir/$ sudo zephir build
Segmentation fault (core dumped)

去官方问问,由于php cli 没有安装 Disable xdebug扩展导致的结果

开始安装

git clone git://github.com/xdebug/xdebug.git

cd xdebug
# 生成configure 配置文件/xdebug$ /opt/php7.0.22/bin/phpize
# 查找 php-config 配置我文件
/xdebug$ sudo find / -name php-config
/opt/php7.0.22/bin/php-config
# 配置
./configure --enable-xdebug --with-php-config=/opt/php7.0.22/bin/php-config
# 编译
make -j2  
# 安装
sudo make install

编译成功后的界面

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

cli 添加配置文件,是以下红色部分:

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

vim /etc/php/7.0/cli/php.ini 添加以下代码:

zend_extension=/opt/php7.0.22/lib/php/extensions/no-debug-non-zts-/xdebug.so

web 页面配置文件

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

sudo vim /opt/php7.0.22/etc/php.ini 配置文件添加

zend_extension=/opt/php7.0.22/lib/php/extensions/no-debug-non-zts-/xdebug.so

重启php-fpm 后的效果

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

》》》》》》》遇到的坑,如何解决

PHP Fatal error: Class 'jsonserializable' not found in Unknown on line 

Phalcon 官方:https://github.com/phalcon/zephir/issues/1127

也就是说php cli 命令行的Phalcon扩展没有安装

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

你可以去看这里:https://*.com/questions/36848664/php-fatal-error-class-jsonserializable-not-found-in-unknown-on-line-0

我是如何做的:

cd /etc/php/7.0/mods-available
sudo vim phalcon.ini
添加内容:
extension=phalcon.so cd /etc/php/7.0/cli/conf.d/
sudo ln -s /etc/php/7.0/mods-available/phalcon.ini -phalcon.ini

二、快速安装


1、xdebug 网址 :https://xdebug.org/

2、下载配置安装和自己服务对应的xdebug版本

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

3、打印自己服务器配置的环境信息(phpinfo()),图小所示

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

4、鼠标右键查看(phpinfo())网页的源代码,复制所有网页源代码粘贴到(https://xdebug.org/wizard.php)表单输入框中,直接运行即可

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

5、https://xdebug.org/wizard.php 页面将会出现与之对应的xdebug 配置信息

(1)Linux 配置信息

Tailored Installation Instructions

Summary

Xdebug installed: 2.6.0alpha1
Server API: FPM/FastCGI
Windows: no
Zend Server: no
PHP Version: 7.1.9
Zend API nr: 320160303
PHP API nr: 20160303
Debug Build: no
Thread Safe Build: no
Configuration File Path: /usr/local/php-7.1.8/etc
Configuration File: /usr/local/php-7.1.8/etc/php.ini
Extensions directory: /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303
Instructions Download xdebug-2.6.0.tgz
Unpack the downloaded file with tar -xvzf xdebug-2.6.0.tgz
Run: cd xdebug-2.6.0
Run: phpize (See the FAQ if you don't have phpize. As part of its output it should show: Configuring for:
...
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step. Run: ./configure
Run: make
Run: cp modules/xdebug.so /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303
Update /usr/local/php-7.1.8/etc/php.ini and change the line
zend_extension = /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Restart the webserver
If you like Xdebug, and thinks it saves you time and money, please have a look at the donation page.

(2)Windows 环境配置信息(php-study集成环境)

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

(3)修改配置文件

[xdebug]
zend_extension = E:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug-2.6.0-7.1-vc14-nts.dll xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"

6、按照以上说明下载(或者编译相应的扩展到系统环境中去,记住要修改配置文件后,记得重启服务,验证是否安装成功,出现以下界面表示安装成功

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

7、 phpstrom 如何配置

(1)打开phpstrom IDE 软件,点击下拉小箭头

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

(2)添加应用程序 PHP Web Application

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

(3)配置server 服务器

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

(4)配置一个本地服务器为了调试

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

8、实战

(1)下面我们通过PHP异常的代码进行测试xDebug

当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。

如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。

让我们尝试抛出一个异常,同时不去捕获它:

<?php
//create function with an exception
function checkNum($number)
{
$res = $number;
if ($res > 10) {
throw new Exception("Value must be 1 or below");
}
return true;
} //trigger exception
checkNum(2);

(2)演示效果

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

【1】配置phpStrom的Xdebug配置

【2】使用一个PHP异常的代码作为调试

【3】调制之前一开启监听Xdebug

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

【4】在需要调试的行上打上断点(点击一下行号后面的空白处即可,再点一次取消断点),以下我们打了两个断点

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

【5】开始调试,记得一定要打断点

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

【6】这时候会自动打开浏览器你所要调试的URL地址,同时携带xDebug的ID(http://localhost/Xdebug-Test/index.php?XDEBUG_SESSION_START=10409)

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

【7】这时候phpStrom IDE 会自动转向调试的代码片段(如果你是刷新的,则会在任务栏提示你,一闪一闪的),也就打断点的地方

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

注意:以上的断点和刚开始打的断点已经不同的,中间是一个(√)对号,表示调试已经开始了

【8】按住F8进行调试,Variables 部分中的数据为Xdebug输出的数据 $number = 2

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

F8 继续调试,可以看出当前的值$res = 2,可以看出传入的参数,还有那个当前变量的值是多少一目了然

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

重复以上步骤,给 checkNum() 函数传递不同的参数,通过Xdebug查看程序执行的详细步骤,亲自动手试试吧!

【9】根据断点配置,或在打开 Debug URL 的过程中,或在 POST 之后,如果 PhpStorm 监听到了 Debug 连接,就会立即切换到编辑器界面,并跳转到设置的断点处,浏览器端会等待 PhpStorm 的操作。

【10】以上为本地最简单的调试就此结束

四、使用域名

1、测试环境:

(1)运行环境:phpStudy 集成环境

(2)框架:使用TP5 最新框架测试

2、下载框架

TP5.1 只能使用composer安装,安装详细地址:https://www.kancloud.cn/manual/thinkphp5_1/353948

安装命令:composer create-project topthink/think tp5.1

  PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

3、浏览器查看是否安装成功

  PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

4、配置域名

  PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

5、phpStrom 配置

修改配置文件:php.ini

[XDebug]
xdebug.profiler_output_dir="E:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.trace_output_dir="E:\phpStudy\PHPTutorial\tmp\xdebug"
zend_extension = E:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug-2.6.0-7.1-vc14-nts.dll
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=tp5.test
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_autostart=1 

如果 xdebug.remote_host = 127.0.0.1 则验证未通过,所以必须设置为域名(上面配置的tp5.test)

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

验证通过

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

开始调试。提示错误信息

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

解决办法,项目目录做一个映射既可以

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

补充:如果是本地调试的话,要做一个映射的

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

继续调试,则和第一次配置localhost一样调试就可以了

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

五、使用域名和PostMan 调试接口

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

自动配置命名空间

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

配置完成之后

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

我们再次新建项目的时候,命名空间已经自动加载上了(当然了,如果该文件夹下面已经创建过一次文件了,则第二次创建的时候也会自动提示命名空间的)

PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题