php 配置远程调试,PHP Linux 环境下搭建 XDEBUG并配置远程调试

在网站 https://xdebug.org/download.php 找到对应PHP版本的XDEBUG下载,下载时选择source版本

e7e07231254c

image

获取下载地址## 下载打包的源码

wget https://xdebug.org/files/xdebug-2.5.5.tgz

解包

tar zxvf xdebug-2.5.5.tgz

进入解包后的源码目录

cd xdebug-2.5.5

执行 phpize 生成配置文件脚本 configure

phpize

查找php-config 的位置

find / -name php-config

执行 configure 脚本 --with-php-config=php-config的路径

./configure --with-php-config=/usr/local/php/bin/php-config

编译源码

make

编译生成PHP的扩展模块,成功完成后根据提示( Installing shared extensions: )找到模块路径记录下来后面要用来配置xdebug

make install

e7e07231254c

image

服务器端安装完成

配置PHPSTORM 连接上服务器,相当于 ftp

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

配置PHPSTORM XDEBUG端口

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

配置Xdebug 和 Xdebug 与 PHPSTORM 的通信

查看PHP载入的所有配置文件

e7e07231254c

image

进入PHP会扫描的配置文件夹,添加xdebug的配置,这里要注意可能只是命令行的配置文件,不代表 php-fpm 也会使用这些配置,如果后面没有在 phpinfo 中看到xdebug, 先重启 php-fpm 和 nginx,如果还是无效那么要去 php-fpm 读取的配置中设置 xdebug 的配置

; so 的路径 make install 成功后有提示,上面讲过

zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so

xdebug.remote_enable=1

;远程IP(公网IP),由于公网IP是动态的,

;但是没有路由器权限,又不能做端口映射

;所以这里采用 SSH 隧道的方式转发

xdebug.remote_host=127.0.0.1

;远程调试端口

xdebug.remote_port=9020

;调试器的关键字

xdebug.idekey=PHPSTORM

xdebug.remote_handler=dbgp

xdebug.remote_mode=req

xdebug.remote_log=/var/log/php/xdebug.log

xdebug.remote_timeout=20000

重启 php-fpm 和 nginx

systemctl restart php-fpm

systemctl restart nginx

建立后台运行的SSH隧道

ssh -f -N -R 192.168.1.197:9020:127.0.0.1:9020 root@110.110.110.128

完成。。。。

XDEBUG 调试示例

e7e07231254c

image

e7e07231254c

image

e7e07231254c

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAP原理

定义在一个分布式系统(指系统中的节点互相连接并共享数据)中,当涉及读写操作时,只能保证一致性 (Consistency)、可用性 (Availability)、分区容错性 (Partition Tolerance)三者中的两个,另外一个必须被牺牲。一致性&am…

大学生开题报告php,php毕业设计开题报告

php毕业设计开题报告该频道涵盖有关于开题报告和毕业设计的论文范例,免费教你怎么写php毕业设计论文提供相关参考资料。一、研究背景1 基于英语新课程标准的要求。《英语课程标准》指出:必须正视学生外语学习基础和发展要求的差异,遵循外语学习的客观规律…

服务器应用服务为何卡顿?原来是内存耗尽惹的祸!

做过运维的朋友们都可能会遇到:服务器应用程序运行慢的问题,最终各部门找上门,。今天在这我跟大家分享一个案例及其解决办法。以前我跟很多朋友们也为这样的事情苦恼过,我的服务器内存可是64G啊,这都不够它吃的。后来我…

matlab 传感器的迟滞,MATLAB PI迟滞模型问题

之前我用matlab进行迟滞模型建模,误差非常大,我之前怀疑是自己的参数辨识出问题了,所以我用论文中的阈值向量和权重向量进行建模,输入数据也是用论文数据,但是出来的拟合的线误差非常大,和文献中相差太大。…

(2)MongoDB副本集自动故障转移原理(含客户端)

前文我们搭建MongoDB三成员副本集,了解集群基本特性,今天我们围绕下图聊一聊背后的细节。默认搭建的副本集均在主节点读写,辅助节点冗余部署,形成高可用和备份,具备自动故障转移能力。集群心跳保活集群每个节点以周期性…

matlab如何使用cu文件,Matlab编译cuda的.cu文件

matlab函数,大体首先是用nvcc命令生成.o文件,然后用mex链接对应库文件,生成动态链接库(.mexw64等)。测试环境:1) Windows x64 matlab cuda 5.5 vs20122) Ubuntu 12.04 amd64 server matlab gcc cuda 5.5windows用户需要根据…

C++map容器-查找和统计

map查找和统计 功能描述&#xff1a; 对map容器进行查找数据以及统计数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <map> //map容器 查找和统计void test01() {//查找map<int, int >m;m.insert(p…

C++map容器-插入和删除

map插入和删除 功能描述&#xff1a; map容器进行插入数据和删除数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <map>//map容器 插入和删除 void printMap(map<int, int> &m) {for (map<in…

你需要了解的 JIT Debugging

如果你还不清楚什么是转储文件&#xff0c;不知道什么时候需要转储文件&#xff0c;请参考转储文件系列文章的第一篇 —— 转储文件知多少。前言 我在 你需要知道的 N 种抓取 dump 的工具 的工具 这篇文章里&#xff0c;向大家介绍了几款可以抓取转储文件的工具及其简单用法。不…

超越“迁移”的思考:应用程序该如何被Kubernetes接管?

传统虚拟机&#xff08;VM&#xff09;的可扩展性差强人意&#xff0c;但Kubernetes可以快速&#xff0c;无缝地扩展正在运行的服务。Kubernetes将容器、集群以及广泛的抽象配置方法引入桌面&#xff0c;用于提升部署和变更管理体验&#xff0c;从而使人们对Kubernetes关注更多…

C++string容器-字符串拼接

string字符串拼接 功能描述&#xff1a; 实现在字符串末尾拼接字符串 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string字符串拼接 void test01() {string str1 "我";str1 "爱…

如何运用领域驱动设计 - 存储库

概述在上一篇文章<如何运用领域驱动设计 - 聚合>中&#xff0c;我们已经了解过领域驱动设计中一个很核心的对象-聚合。在现实场景中&#xff0c;我们往往需要将聚合持久化到某个地方&#xff0c;或者是从某个地方创建出聚合。此时就会使得领域对象与我们的基础架构产生紧…

C++string容器-字符串查找和替换

string查找和替换 功能描述&#xff1a; 查找&#xff1a;查找指定字符串是否存在 替换&#xff1a;在指定的位置替换字符串 函数原型&#xff1a; rfind 和find 的区别&#xff1a; rfind从右往左查找 find从左往右查找 查找案列代码如下&#xff1a; #include <iostrea…

如何运用领域驱动设计 - 工作单元

概述在上一篇 《如何运用领域驱动设计 - 存储库》 的文章中&#xff0c;我们讲述了有关仓储的概念和使用规范。仓储为聚合提供了持久化到本地的功能&#xff0c;但是在持久化的过程中&#xff0c;有时一个聚合根中的各个领域对象会分散到不同的数据库表里面&#xff1b;又或者是…

C++string容器-字符串比较

string字符串比较 功能描述: 字符串之间的比较 比较方式&#xff1a; 通常用来比较两个字符串是否相等 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring> //string字符串比较void test01() {string…

国产自主研发编程语言火了,同行十二年,不知Python是木兰?

1月17号有媒体称&#xff0c;一款面向智能物联网和编程教育的号称自主研发语言横空出世&#xff0c;名为【Mulan 】。消息一出&#xff0c;引起了众多争议。但有知乎网友发现&#xff0c;下载的程序包解包后——是个 Python&#xff1f;何为木兰&#xff1f;1月17号&#xff0c…

C++string容器-字符存取

string中单个字符存取方式有两种 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string 字符存取 void test01() {string str "hello";cout << "str " << str << endl;for (int i…

有了容器为什么kubernetes还需要Pod?

简介容器并不是软件开发的银弹&#xff0c;没有任何一种技术能解决软件开发中的所有问题当我们采用容器化技术的时候&#xff0c;摒弃了传统的物理机或者虚拟机的部署方式&#xff0c;以一种更加轻快&#xff0c;便捷的方式来部署我们的应用。到容器化的进阶&#xff0c;再加上…

C++string容器-插入和删除

string插入和删除 功能描述&#xff1a; 对string字符串进行插入和删除字符操作 函数原型&#xff1a; #include <iostream> using namespace std; #include <cstring>//字符串 插入和删除 void test01() {string str "hello";str.insert(1, "…

.NET绘制旋转太极图

前言我之前发了一篇《 用.NET写“算命”程序》的文章&#xff0c;但有人纷纷提出了质疑&#xff0c;认为没有“科学”&#xff08; mi xin&#xff09;依据????。所谓“太极生两仪&#xff0c;两仪生四象&#xff0c;四象生八卦&#xff0c;八卦定吉凶&#xff0c;吉凶生大…