## 前言
对于调试 php 项目可以说是很熟悉了,网络上的文章也有很多。前段时间朋友询问我,是否清楚 php 远程调试。远程调试只在 java 项目上操作过,也是按照网上的文章照猫画虎,对于 php 的远程调试自然不是很清楚。前段时间又很忙,没有时间去操作,后来朋友跟我说他弄好了。我想,在学习方面,我岂能落于人后。对于 linux 的相关操作也不是很熟悉,所以我决定在 ubuntu 虚拟机上安装一个 DVWA 的 php 项目环境,同时在本地对此进行调试。
## 安装 DVWA 项目
系统环境
```whippet@ubuntu:~/Desktop$ cat /etc/issueUbuntu 20.04.2 LTS \n \lwhippet@ubuntu:~/Desktop$ uname -aLinux 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 updatewhippet@ubuntu:~/Desktop$ sudo apt-get upgrade```
安装 php 5.6
```whippet@ubuntu:~/Desktop$ sudo apt-get install php5.6whippet@ubuntu:~/Desktop$ php -vPHP 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 apache2whippet@ubuntu:~/Desktop$ sudo service apache2 start```
安装 mysql 并启动
```whippet@ubuntu:~/Desktop$ sudo apt-get install mysql-serverwhippet@ubuntu:~/Desktop$ sudo vim /etc/mysql/debian.cnf[client]host = localhostuser = rootpassword = rootwhippet@ubuntu:~/Desktop$ sudo mysql -u root -prootmysql> 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.zipwhippet@ubuntu:/var/www/html$ sudo unzip DVWA-2.0.1.zip whippet@ubuntu:/var/www/html$ sudo mv DVWA-2.0.1/ dvwawhippet@ubuntu:/var/www/html$ sudo cp dvwa/config/config.inc.php.dist dvwa/config/config.inc.phpwhippet@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 = Offallow_url_include = Onwhippet@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.txtwhippet@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.txtwhippet@ubuntu:/var/www/html$ sudo chmod g+w dvwa/config/whippet@ubuntu:/var/www/html$ sudo service apache2 restartwhippet@ubuntu:/var/www/html$ sudo service mysql restart```
## 配置 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
我们可以看到相较于 windows 上种类繁多的二进制文件,linux 只提供了源码文件,需要自己进行编译,下载源码之后我们复制到虚拟机内部
```whippet@ubuntu:~$ tar -xcvf xdebug-2.5.5.tgzwhippet@ubuntu:~$ sudo apt install php5.6-devwhippet@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-configwhippet@ubuntu:~/xdebug-2.5.5$ ./configure --enable-xdebug --with-php-config=/usr/bin/php-configwhippet@ubuntu:~/xdebug-2.5.5$ sudo make && make install<可能需要提升至root权限>```
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 的信息已经显示出来了
至此 xdebug 的相关配置就 ok 啦,接下来我们对本地的 phpstrom 进行配置
### PHPSTROM 配置
首先我们从虚拟机内,把已经安装好的项目代码打包再脱下来,这是因为,有一些项目在安装之后会对源代码进行一定的修改,为了不出现偏差我们就把安装好的代码给拖取下来。
利用 PHPSTROM 打开这个项目,并配置相关参数信息
File -> Settings -> Languages & Frameworks -> PHP -> Debug
配置 Servers
此处要注意,需要直接指定到网站的目录位置
配置PHP Web Application
然后我们打开登录的 login.php ,在其中添加断点,并设置 PHPSTROM 的监听模块
浏览网站页面,同时打开浏览器的调试插件
我们可以看到已经跳到我们断点的位置
至此调试的基本过程已经完成,以下的步骤属于可做可不做,本着学习的想法,我还是把添加上吧
### 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_configPermitRootLogin yeswhippet@ubuntu:~$ sudo /etc/init.d/ssh restart```
验证一下,发现可以登录成功
打开 PHPSTROM
添加一个 sftp 协议
选择 ubuntu 上 php 的路径位置
至此已经基本配置完成,我们来进行一下验证
File -> Settings -> Languages & Frameworks -> PHP -> Debug
配置完成,我们修改一个文件进行验证一下
文笔粗糙、内容浅显,不足之处欢迎师傅们指正,感激不尽。
本文作者:Whippet
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/155273.html
暂无评论内容