PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题
前言:
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
编译成功后的界面
cli 添加配置文件,是以下红色部分:
vim /etc/php/7.0/cli/php.ini 添加以下代码:
- zend_extension=/opt/php7.0.22/lib/php/extensions/no-debug-non-zts-/xdebug.so
web 页面配置文件
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 后的效果
》》》》》》》遇到的坑,如何解决
- PHP Fatal error: Class 'jsonserializable' not found in Unknown on line
Phalcon 官方:https://github.com/phalcon/zephir/issues/1127
也就是说php cli 命令行的Phalcon扩展没有安装
我是如何做的:
- 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版本
3、打印自己服务器配置的环境信息(phpinfo()),图小所示
4、鼠标右键查看(phpinfo())网页的源代码,复制所有网页源代码粘贴到(https://xdebug.org/wizard.php)表单输入框中,直接运行即可
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集成环境)
(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、按照以上说明下载(或者编译相应的扩展到系统环境中去,记住要修改配置文件后,记得重启服务,验证是否安装成功,出现以下界面表示安装成功
7、 phpstrom 如何配置
(1)打开phpstrom IDE 软件,点击下拉小箭头
(2)添加应用程序 PHP Web Application
(3)配置server 服务器
(4)配置一个本地服务器为了调试
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)演示效果
【1】配置phpStrom的Xdebug配置
【2】使用一个PHP异常的代码作为调试
【3】调制之前一开启监听Xdebug
【4】在需要调试的行上打上断点(点击一下行号后面的空白处即可,再点一次取消断点),以下我们打了两个断点
【5】开始调试,记得一定要打断点
【6】这时候会自动打开浏览器你所要调试的URL地址,同时携带xDebug的ID(http://localhost/Xdebug-Test/index.php?XDEBUG_SESSION_START=10409)
【7】这时候phpStrom IDE 会自动转向调试的代码片段(如果你是刷新的,则会在任务栏提示你,一闪一闪的),也就打断点的地方
注意:以上的断点和刚开始打的断点已经不同的,中间是一个(√)对号,表示调试已经开始了
【8】按住F8进行调试,Variables 部分中的数据为Xdebug输出的数据 $number = 2
F8 继续调试,可以看出当前的值$res = 2,可以看出传入的参数,还有那个当前变量的值是多少一目了然
重复以上步骤,给 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
3、浏览器查看是否安装成功
4、配置域名
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)
验证通过
开始调试。提示错误信息
解决办法,项目目录做一个映射既可以
补充:如果是本地调试的话,要做一个映射的
继续调试,则和第一次配置localhost一样调试就可以了
五、使用域名和PostMan 调试接口
自动配置命名空间
配置完成之后
我们再次新建项目的时候,命名空间已经自动加载上了(当然了,如果该文件夹下面已经创建过一次文件了,则第二次创建的时候也会自动提示命名空间的)
PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题的更多相关文章
- PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)
先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...
- kvm虚拟化学习笔记(三)之windows kvm虚拟机安装
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- python3.4学习笔记(三) idle 清屏扩展插件
python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...
随机推荐
- delphi 通过事务插入数据
orsn1.StartTransaction; try qry1.Sql.Clear; qry1.Sql.Text:=' select * from log '; qry1.Open; qry1.In ...
- Java ThreadLocal 理解
ThreadLocal 概念: ThreadLocal不是用来解决对象共享访问的问题,而主要是提供了保存对象的方法和避免参数传递的方便的对象访问方式. ThreadLocal并不是一个Thread,而 ...
- BZOJ3417[Poi2013]Tales of seafaring——BFS
题目描述 Young Bytensson loves to hang out in the port tavern, where he often listens to the sea dogs te ...
- BZOJ5093 图的价值(NTT+斯特林数)
显然每个点会提供相同的贡献.于是现在只考虑1号点的贡献.若其度数为i,则在2~n号点选i个连上,剩下的边随便连,这样可以算出答案为 这个式子可以O(n)计算.发现k比较小,于是考虑如何将这个式子化为与 ...
- Json数组对象取值
1.数据格式 {"data":[{"username":"xxx","avatar":"xxx",& ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C
A:链接:http://codeforces.com/contest/831/problem/A 解题思路: 从前往后分别统计递增,相等,递减序列的长度,如果最后长度和原序列长度相等那么就输出yes: ...
- 自学Linux Shell13.1-命令行参数
点击返回 自学Linux命令行与Shell脚本之路 Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个 ...
- Problem C: 文体双花 解题报告
Problem C: 文体双花 被A穿的题,我这个屑只拿了20... 意识到这个题简单的时候考试已经快结束了,那边又各种吵,不过下午改题的情况来看,我可能码力还有点问题... 据神O所说,出这个题的时 ...
- Java -- JDBC 学习--使用 DBUtils
Apache—DBUtils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdb ...
- HDU 4289 Control (网络流,最大流)
HDU 4289 Control (网络流,最大流) Description You, the head of Department of Security, recently received a ...