php 7之PhpStorm + Nginx + Xdebug运行调试

2024-09-08 12:48

本文主要是介绍php 7之PhpStorm + Nginx + Xdebug运行调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作环境:
windows
PHP 7.1.10
PhpStorm-2017.2.4
Xdebug 2.5.4
Xdebug helper 1.6.1
nginx-1.12.2

注意查看端口占用情况

netstat -ano //查看所以端口
netstat -aon|findstr "80" //查看指定端口占用情况

比如80端口查询情况

  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4

最后一列就是表示PID,进程管理器,可将其结束,不过要注意是什么程序占用

centos 7用ss命令来查看端口占用和对应进程

mysqld进程在监听4567端口,进程id是2593# ss -lnp|grep 4567
tcp    LISTEN     0      128                    *:4567                  *:*      users:(("mysqld",2593,11))2593的父进程是2592# ps -ef|grep 2593
mysql     2593  2592  0 04:46 ?        00:00:57 /usr/libexec/mysqld --wsrep-cluster-address=gcomm://

简介

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况

https://xdebug.org/

PhpStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。

常用快捷键

CTRL+单击        # 定位到类、函数、变量的声明位置(同:CTRL+B)
CTRL+SHIFT+N    # 按名称查找文件,并快速进入
ALT+F1          # 在项目中定位当前文件所在位置
CTRL+F12        # 当前文件的方法列表
CTRL+F          # 在当前文件中查找字符串(当前文件替换用:CTRL+R)
CTRL+SHIFT+F    # 在当前项目/路径中查找字符串(说明:这个快捷键可能和输入法的快捷键有冲突。替换用:CTRL+SHIFT+R)CTRL+ALT+L      # 格式化代码
F2              # 快速定位错误或警告,反向用SHIFT+F2
CTRL+ALT+←/→    # 返回上次编辑的位置
CTRL+Z          # 撤销
CTRL+SHIFT+Z    # 重做
ALT+J           # 依次多选编辑,同Sublime的CTRL+D。反方向用ALT+SHIFT+J
ALT+左键拖动     # 垂直选择CTRL+/          # 行注释
CTRL+SHIFT+/    # 块注释
ALT+ ↑/↓        # 在方法间快速移动
CTRL+G          # 转到行
双击SHIFT        # 在当前项目中搜索(文件名、类、方法、函数等等)

其中的ALT+J,可搜索Add Selection for Next Occurrence重新配置快捷键
https://www.jetbrains.com/phpstorm/

激活

下载安装Xdebug

这里只介绍Xdebug的下载及安装过程,其它的可关注我的其它文章或自行百度哈
打开官方网址:https://xdebug.org/
陈科肇

跳转到自定义安装说明
根据要求,win+r > 输入cmd,键入php命令:php -i,然后将输出的内容复制粘贴到打开的网页文本框内

C:\Users\Administrator>php -i
phpinfo()
PHP Version => 7.1.10
...

陈科肇

之后,就会根据你的php版本信息匹配出你要下载的Xdebug版本信息、下载链接及安装方法

陈科肇

  1. 将下载的php_xdebug-2.5.4-7.1-vc14-x86_64.dll文件,放到php根目录下的ext目录下
  2. 配置编辑C:\WINDOWS\php.ini

配置完后再次执行php -i,发现报错了

C:\Users\Administrator>php -i
Failed loading ext\ext\php_xdebug-2.5.4-7.1-vc14-x86_64.dll
phpinfo()
PHP Version => 7.1.10
...

Failed loading,加载失败,发现ext\ext\php_xdebug-2.5.4-7.1-vc14-x86_64.dll怎么多了层目录,是什么情况?

再修改下,zend_extension = php_xdebug-2.5.4-7.1-vc14-x86_64.dll

再试,无报错了。

输入php -m
发现

[Zend Modules]
Xdebug

说明已经成功了

C:\Users\Administrator>php -m
[PHP Modules]
bcmath
calendar
Core
ctype
date
dom
filter
hash
iconv
json
libxml
mcrypt
mysqli
mysqlnd
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
wddx
xdebug
xml
xmlreader
xmlwriter
zip
zlib[Zend Modules]
Xdebug

或者在浏览器输出phpinfo()
陈科肇

表示真的安装成功了哇~

PhpStorm配置Xdebug

1、配置Servers

PhpStorm打开File->Settings…->Languages & Frameworks->PHP,展开PHP选项,打开Servers进行添加配置

配置项如下:
Name:localhost
Host:localhost
Port:8089
Debugger:Xdebug
陈科肇

2、配置Debug

找到Languages & Frameworks > PHP > Debug配置,将Debug port设置为9000(默认是9000)。

陈科肇

Languages & Frameworks > PHP > Debug>DBGp proxy
IDE key:PHPSTORM
Host:localhost
Port:9000
陈科肇

3、chrome添加扩展程序Xdebug helper

添加成功后,进行配置选择IDE key为PhpStorm

陈科肇

陈科肇

使用PhpStorm进行调试

1、在PhpStorm的工具栏中,有个类似电话的图标

陈科肇

点击将其开启

陈科肇

2、chrome浏览器中开启Xdebug helper插件

陈科肇

开启后,图标就变绿色了

运行项目Hello Word

工具栏,Run>Run…
陈科肇

出错咯…

20:41   PHP Interpreter is not configured: Please configure PHP Interpreter to use built-in web server

陈科肇

run,又有问题了

浏览器显示502 Bad Gateway
陈科肇

另:PhpStorm的页面默认在localhost:63342端口下运行
PhpStorm打开File->Settings…->Build,Execution,Deployment>Debugger下的Built-in server的Port设置

经过一顿思考,终于可以了

  1. 首先得有服务(选择了Nginx)运行你的php文件
  2. 待Nginx成功运行后,再配置到PhpStorm

好了,先实现第一步
下载安装Nginx,https://nginx.org/en/download.html
下载的是nginx-1.12.2.zip
解压放到目录F:\0Develop\nginx-1.12.2
编辑F:\0Develop\nginx-1.12.2\conf\nginx.conf文件并保存
listen、location[root index]都配置下

    server {listen       8089;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   E:/0Develop/php/workspace/11;index  index.php index.html index.htm;}...

location ~ .php$

        location ~ \.php$ {root           E:/0Develop/php/workspace/11;#要运行项目的根目录fastcgi_pass   127.0.0.1:9001;#fastcgi端口,稍后会启动php-cgi.exefastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  E:/0Develop/php/workspace/11$fastcgi_script_name;#/scripts这里配置成绝对路径,不然会报404include        fastcgi_params;}

1、配置完成,启动Nginx服务
Nginx一些操作命令:

start nginx   //启动服务
tasklist /fi "imagename eq nginx.exe"   //see nginx processesnginx -s stop   //fast shutdownnginx -s quit   //graceful shutdownnginx -s reload //changing configuration, starting new worker processes with a new configuration, graceful shutdown of old worker processesnginx -s reopen //re-opening log files

2、启动php-cgi.exe
PHP三种运行方式(php_mod、cgi、fastcgi)

以CGI的方式运行,CGI英文叫做公共网关接口,Nginx在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Nginx,然后再返回给相应的请求用户。

我们通过-help看到php-cgi.exe都有那些操作

E:\0Develop\php\php-7.1.10-Win32-VC14-x64>php-cgi.exe -help
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]php <file> [args...]-a               Run interactively
  -b <address:port>|<port> Bind Path for external FASTCGI Server mode
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.
  -T <count>       Measure execution time of script repeated <count> times.

我想,要用到的应该是b了,执行以下命令

E:\0Develop\php\php-7.1.10-Win32-VC14-x64>php-cgi.exe -b 127.0.0.1:9001

陈科肇

所以顺序应该是先启动FASTCGI Server mode,再启动Nginx服务
3、访问php文件
index.php文件内容:

<?php
phpinfo();echo "Hello Word!"
?>

http://localhost:8089/index.php

在输出的内容中,可以看到

keyvalu
Server APICGI/FastCGI

陈科肇

配置到PhpStorm启动

看图吧

陈科肇

陈科肇

点击在浏览器中打开,就可以看到你的项目在运行了

3、在PhpStorm中设置代码断点处

通过chrome浏览器访问项目后,调用到断点处的代码后,自然会被拦截下来了

又来问题了,竟然没拦截下来,经过一番折腾,终于搞定了

打开php.ini,编辑追加以下内容

[Xdebug]
zend_extension = php_xdebug-2.5.4-7.1-vc14-x86_64.dll //上面只介绍添加了这行,以下几行才是重要的
xdebug.remote_enable=On//远程启动,这个一定要开启
xdebug.remote_autostart=On//开启自动开始调试
xdebug.remote_log="E:/0Develop/php/xdebug.log"

陈科肇

我也是无意中看到debug.remote_enable竟然是Off状态,改为On状态就可以了

陈科肇

总算进来了,害我搞了一天

这篇关于php 7之PhpStorm + Nginx + Xdebug运行调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148157

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各