PHPSTROM远程调试php项目(php远程控制)

## 前言

对于调试 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```

图片[1]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

安装 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```

图片[2]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[3]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

## 配置 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

图片[4]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

我们可以看到相较于 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权限>```

图片[5]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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 的信息已经显示出来了

图片[6]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

### PHPSTROM 配置

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

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

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

图片[7]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[8]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

配置 Servers 

图片[9]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

配置PHP Web Application  

图片[10]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[11]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

图片[12]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

图片[13]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

图片[14]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

### 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```

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

图片[15]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

打开 PHPSTROM 

图片[16]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

添加一个 sftp 协议

图片[17]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[18]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[19]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[20]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

选择 ubuntu 上 php 的路径位置

图片[21]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

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

图片[22]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

图片[23]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

图片[24]-PHPSTROM远程调试php项目(php远程控制)-Pikachu Hacker

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

本文作者:Whippet

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

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容