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用户需要根据…

BeetleX.Redis基础操作和对象格式

Decr为键 key 储存的数字值减去一。如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。v…

mingw w64 matlab,Matlab安装MinGW-w64问题解决

在命令行窗口执行mex -setup报如下错误:错误使用 mex未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问http://www.mathworks.com/support/compilers/R2017a/。解决办…

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

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

为容器提供持久存储,这个方法试试看

随着近几年容器应用的兴起&#xff0c;持久性存储已成为采用该应用的主要障碍。容器已成为机器处理和深度学习应用程序的主流&#xff0c;越来越多的供应商正将重点放在可以将大量数据和闪存链接到容器编排平台的存储接口上。VAST Data 就是其中之一&#xff0c;它于本周宣布了…

matlab解调2fsk,2FSK调制解调系统的MATLAB实现

第 34 卷 第 2 期 玉林师范学院学报(自然科学) Vol.34 No.2 2013 年 JOURNAL OF YULIN NORMAL UNIVERSITY (Natural Science) 物理 学 1 引言 信原理是高校电子信息类专业的一门重要的专业基础课&#xff0c;该门课程理论性强、内容抽象&#xff0c;如果仅靠单纯的课堂讲解&…

基于matlab的回波,基于MATLAB回波信号产生与消除.doc

基于MATLAB回波信号产生与消除摘 要MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等&#xff0c;主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB语言具备高效、可及推理能…

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;向大家介绍了几款可以抓取转储文件的工具及其简单用法。不…

C++map容器-排序

map容器排序 利用仿函数&#xff0c;可以改变排序规则 代码如下&#xff1a; #include <iostream> using namespace std; #include <map> //map容器 排序class Mycompare {public:bool operator()(int v1, int v2) {//降序return v1 > v2;} };void test01() {…

超越“迁移”的思考:应用程序该如何被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;又或者是…