PHPSTROM远程调试php项目
2021-03-22 15:13:00 Author: www.secpulse.com(查看原文) 阅读量:230 收藏

## 前言

对于调试 php 项目可以说是很熟悉了,网络上的文章也有很多。前段时间朋友询问我,是否清楚 php 远程调试。远程调试只在 java 项目上操作过,也是按照网上的文章照猫画虎,对于 php 的远程调试自然不是很清楚。前段时间又很忙,没有时间去操作,后来朋友跟我说他弄好了。我想,在学习方面,我岂能落于人后。对于 linux 的相关操作也不是很熟悉,所以我决定在 ubuntu 虚拟机上安装一个 DVWA 的 php 项目环境,同时在本地对此进行调试。

## 安装 DVWA 项目

系统环境

```
whippet@ubuntu:~/Desktop$ cat /etc/issue
Ubuntu 20.04.2 LTS \n \l
whippet@ubuntu:~/Desktop$ uname -a
Linux ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
```

查看 PHP 环境是否已经安装

```
whippet@ubuntu:~/Desktop$ dpkg -l | grep php
```

添加 PPA 源

```
whippet@ubuntu:~/Desktop$ sudo add-apt-repository ppa:ondrej/php
```

更新系统

```
whippet@ubuntu:~/Desktop$ sudo apt-get update
whippet@ubuntu:~/Desktop$ sudo apt-get upgrade
```

安装 php 5.6

```
whippet@ubuntu:~/Desktop$ sudo apt-get install php5.6
whippet@ubuntu:~/Desktop$ php -v
PHP 5.6.40-47+ubuntu20.04.1+deb.sury.org+1 (cli)
whippet@ubuntu:~/Desktop$ sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml  php5.6-gd
```

安装 apache 并启动

```
whippet@ubuntu:~/Desktop$ sudo apt install apache2
whippet@ubuntu:~/Desktop$ sudo service apache2 start
```

20210317144247.png

安装 mysql 并启动

```
whippet@ubuntu:~/Desktop$ sudo apt-get install mysql-server
whippet@ubuntu:~/Desktop$ sudo vim /etc/mysql/debian.cnf
[client]
host     = localhost
user     = root
password = root
whippet@ubuntu:~/Desktop$ sudo mysql -u root -proot
mysql> create database dvwa;
Query OK, 1 row affected (0.01 sec)
mysql> create user 'dvwa'@'localhost' identified  by 'dvwa';
Query OK, 0 rows affected (0.02 sec)
mysql> grant all on dvwa.* to 'dvwa'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> use mysql;
mysql> ALTER USER 'dvwa'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dvwa';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
```

安装DVWA

```
whippet@ubuntu:~/Desktop$ cd /var/www/html/
下载 https://github.com/digininja/DVWA/archive/2.0.1.zip
whippet@ubuntu:/var/www/html$ sudo unzip DVWA-2.0.1.zip 
whippet@ubuntu:/var/www/html$ sudo  mv DVWA-2.0.1/ dvwa
whippet@ubuntu:/var/www/html$ sudo cp dvwa/config/config.inc.php.dist dvwa/config/config.inc.php
whippet@ubuntu:/var/www/html$ sudo vim dvwa/config/config.inc.php
$_DVWA[ 'db_server' ]   = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ]     = 'dvwa';
$_DVWA[ 'db_password' ] = 'dvwa';
$_DVWA[ 'recaptcha_public_key' ]  = 'Whippet';
$_DVWA[ 'recaptcha_private_key' ] = 'Whippet';
whippet@ubuntu:/var/www/html$ sudo vim /etc/php/5.6/apache2/php.ini
#allow_url_include = Off
allow_url_include = On
whippet@ubuntu:/var/www/html$ sudo chgrp www-data dvwa/hackable/uploads/
whippet@ubuntu:/var/www/html$ sudo chgrp www-data dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
whippet@ubuntu:/var/www/html$ sudo chgrp www-data dvwa/config/
whippet@ubuntu:/var/www/html$ sudo chmod g+w dvwa/hackable/uploads/
whippet@ubuntu:/var/www/html$ sudo chmod g+w dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
whippet@ubuntu:/var/www/html$ sudo chmod g+w dvwa/config/
whippet@ubuntu:/var/www/html$ sudo service apache2 restart
whippet@ubuntu:/var/www/html$ sudo service mysql restart
```

20210317170639.png

20210317173759.png

## 配置 PHPSTROM 调试

### 环境条件   

机器名称| 操作系统 | ip 信息 | 实验环境     

:-:    | :-:     | :-:     | :-:  

虚拟机  | Ubuntu 20.04.2| 192.168.176.171| PHP 5.6.40

本地机器| Windows10| 192.168.176.1| phpstrom

### xdebug 配置

我们直接在 xdebug 的官网上寻找[历史版本](https://xdebug.org/download/historical) 全局搜索 php 5.6

20210317180058.png

我们可以看到相较于 windows 上种类繁多的二进制文件,linux 只提供了源码文件,需要自己进行编译,下载源码之后我们复制到虚拟机内部

```
whippet@ubuntu:~$ tar -xcvf  xdebug-2.5.5.tgz
whippet@ubuntu:~$ sudo apt install php5.6-dev
whippet@ubuntu:~$ cd xdebug-2.5.5/
whippet@ubuntu:~/xdebug-2.5.5$ sudo find / -name php-config 
/etc/alternatives/php-config
/usr/bin/php-config
/var/lib/dpkg/alternatives/php-config
whippet@ubuntu:~/xdebug-2.5.5$ ./configure --enable-xdebug --with-php-config=/usr/bin/php-config
whippet@ubuntu:~/xdebug-2.5.5$ sudo make && make install<可能需要提升至root权限>
```

20210317182149.png

xdebug 被安装在 /usr/lib/php/20131226/

修改php.ini配置文件,在文件中追加以下内容

```
[Xdebug]
zend_extension=/usr/lib/php/20131226/xdebug.so  ;指定Xdebug扩展文件的路径
xdebug.remote_enable=1 ;是否开启远程调试
xdebug.remote_handler=dbgp ;指定远程调试的处理协议
xdebug.remote_mode=req ;可以设为req或jit,req表示脚本一开始运行就连接远程客户端,jit表示脚本出错时才连接远程客户端。
xdebug.remote_host=192.168.176.1 ;指定远程调试的主机名(安装phpstorm的主机ip)
xdebug.remote_port=9000 ;指定远程调试的端口号
xdebug.idekey="PHPSTORM" ;指定传递给DBGp调试器处理程序的IDE Key
```

保存之后重启 apache 服务 sudo service apache2 restart   之后访问 phpinfo 发现xdebug 的信息已经显示出来了

20210318102547.png

至此 xdebug 的相关配置就 ok 啦,接下来我们对本地的 phpstrom 进行配置

### PHPSTROM 配置

首先我们从虚拟机内,把已经安装好的项目代码打包再脱下来,这是因为,有一些项目在安装之后会对源代码进行一定的修改,为了不出现偏差我们就把安装好的代码给拖取下来。

利用 PHPSTROM 打开这个项目,并配置相关参数信息

File -> Settings ->  Languages & Frameworks -> PHP -> Debug 

20210318105407.png

20210318105545.png

配置 Servers 

20210318112858.png

此处要注意,需要直接指定到网站的目录位置 

配置PHP Web Application  

20210318105839.png

20210318113032.png

然后我们打开登录的 login.php ,在其中添加断点,并设置 PHPSTROM 的监听模块

20210318110324.png

浏览网站页面,同时打开浏览器的调试插件

20210318110431.png

我们可以看到已经跳到我们断点的位置

20210318113139.png

至此调试的基本过程已经完成,以下的步骤属于可做可不做,本着学习的想法,我还是把添加上吧

### SSH 配置

先大致描写一下为什么要进行这个操作,就是为了方便对 php 文件的修改,有时候我们想对 php 文件进行修改,但是在本地修改之后,并不会影响远端服务器上的文件,经过这样的配置之后,本地文件修改之后,远端服务器上的文件也会同步修改。

首先,我们安装好的 Ubuntu 虚拟机上是并不存在 SSH 的,所以我们需要先将 Ubuntu 上的 SSH 进行配置。

```
# 安装 openssh 服务
whippet@ubuntu:~$ sudo apt-get install openssh-server
# 启动 ssh 服务
whippet@ubuntu:~$ sudo /etc/init.d/ssh start
# 配置 root 用户连接权限
whippet@ubuntu:~$ sudo  vim /etc/ssh/sshd_config
PermitRootLogin yes
whippet@ubuntu:~$ sudo /etc/init.d/ssh restart
```

验证一下,发现可以登录成功

20210318135231.png

打开 PHPSTROM 

20210318135451.png

添加一个 sftp 协议

20210318135611.png

20210318135858.png

20210318144017.png

20210318143949.png

选择 ubuntu 上 php 的路径位置

20210318140400.png

至此已经基本配置完成,我们来进行一下验证  

File -> Settings -> Languages & Frameworks -> PHP -> Debug

20210318143725.png

配置完成,我们修改一个文件进行验证一下

20210318144211.png

20210318144510.png

文笔粗糙、内容浅显,不足之处欢迎师傅们指正,感激不尽。

本文作者:Whippet

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/155273.html


文章来源: https://www.secpulse.com/archives/155273.html
如有侵权请联系:admin#unsafe.sh