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

时间:2023-02-24 21:19:13

前言:

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的问题

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

  1. PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)

    先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...

  2. kvm虚拟化学习笔记&lpar;三&rpar;之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  3. JSP学习笔记&lpar;三&rpar;&colon;简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  4. VSTO学习笔记&lpar;三&rpar; 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  5. Learning ROS for Robotics Programming Second Edition学习笔记&lpar;三&rpar; indigo rplidar rviz slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  6. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  8. python3&period;4学习笔记&lpar;八&rpar; Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  9. python3&period;4学习笔记&lpar;三&rpar; idle 清屏扩展插件

    python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在*看到 ...

随机推荐

  1. Extjs swfUpload 多图片上传

    一.属性介绍   类型 默认值 描述 upload_url String   处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当前代码所在的文档地址 p ...

  2. 用户交互与while循环&lt&semi;代码&gt&semi;

    #用户交互1 age_oldboy = 56 guess_age = int(input(">>:")) if guess_age == age_oldboy: pri ...

  3. ssh命令:使用密钥文件进行登陆

    在win上面可以使用XSHELL来登录类似于亚马逊这样的安全服务器,在mac上面就可以使用系统自带的命令工具来连接 1.使用命令 ssh -i key.pem [server] 如下: ssh -i  ...

  4. Exploring the Angular 1&period;5 &period;component&lpar;&rpar; method

    Angular 1.5 introduced the .component() helper method, which is much simpler than the.directive() de ...

  5. &lbrack;转&rsqb;tripwire-文件指纹

    原文链接:http://www.ipython.me/centos/tripwire-file-md5.html Tripwire是目前最为著名的unix下文件系统完整性检查的软件工具,这一软件采用的 ...

  6. Centos7添加新源

    yum repolist # 查看yum源列表yum localinstall http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epe ...

  7. centos7下安装docker(13&period;4容器volume总结)

    最近我们学习了docker 存储,首先docker存储有两种:storage driver和data volume. storage driver是由镜像层和容器层组成的,可以通过docker ins ...

  8. Java设计模式学习记录-外观模式

    前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只 ...

  9. multi&lowbar;index&lowbar;container 多索引容器

    multi_index_container是c++ boost库中的一个多索引的容器.因工作中用到了,特来测试试用. #include "stdafx.h" #include &q ...

  10. zookeeper 入门&lpar;二&rpar;

    上一篇教程中重点讲解了如何部署启动一台zookeeper服务 本章中我们会重点讲解下如何 部署一套zookeeper的集群环境 基于paxos 算法,部署一套集群环境要求 至少 要有3个节点  并且节 ...