这是一份儿PHPer需要的远程开发环境不依赖Windows拥抱Linux

4次阅读

共计 1784 个字符,预计需要花费 5 分钟才能阅读完成。

一般情况,开发者多使用 Windows 系统,PHPStorm、VSCode 等软件让我们离不开 Windows,但是,但是多数开发者更倾向于在 Linux 上部署环境。那么这一份教程就诞生了。(MacOS 用户可以绕行)

工具

  • PHPStorm
  • Ubuntu 16.04

准备工作

在 Windows 系统上安装 PHPStorm 和 VM 虚拟机,在虚拟机中安装 Ubuntu 系统。

在 Ubuntu 安装 lnmp(Linux+Nginx+MySQL+PHP)集成环境

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

远程部署代码

打开 PHPStorm,选择Create New Project from Existing Files

选择从远程服务器 ftp 同步项目

输入项目名,并选择要同步到本地的项目路径

自动上传操作选择如下,当你 Ctrl+ S 时,PHPStorm 会帮你上传当前修改的文件到服务器。这样会相当方便。

选择新建远程服务器

填写项目名,Type选择SFTP,填写服务器 IP、用户名、密码以及远程项目所在的路径。

//linux 下查看 ip 命令(不是 Windows 的 ipconfig)
ghost@ghost-virtual-machine:~$ ifconfig

直接点 finish,PHPStorm 会自动同步远程服务器的代码。

远程 debug

安装 xdebug 扩展

下载、编译 xdebug

wget http://www.xdebug.org/files/xdebug-2.2.3.tgz
tar xzf xdebug-2.2.3.tgz
cd xdebug-2.2.3
/usr/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

查看 php 安装路径下的 lib 库目录是否生成了 xdebug.so 文件。(我的目录:/usr/local/php/lib/php/extensions/xdebug.so)

然后配置 /usr/local/php/etc/php.ini文件,需要注意的是 xdebug 是 zend 扩展,zend_extension= "xdebug.so",而不是extension= "xdebug.so"

[xdebug]
zend_extension= "xdebug.so"

xdebug.profiler_enable = on
xdebug.default_enable = on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.trace_output_name = trace.%c.%p
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name="cachegrind.out.%s"

xdebug.remote_enable =1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = 10.0.100.236 // 本机的 ip,不是虚拟机或者远程服务器的 ip
xdebug.remote_mode = "req"
xdebug.remote_port = 9001

如果不知道本机的 ip 或本机为动态 ip,需要加入 xdebug.remote_connect_back,将其设置为 1,此时xdebug.remote_host 会失效。

PHPStorm 中配置 xdebug

首先,设置端口,此端口要与上文配置 xdebug.remote_port 保持一致。

配置远程服务器,勾选Use path mappings,将本地文件与服务器文件相映射。

配置 DBGP Proxy,输入远程服务器的 ip 和端口,IDE key 填写为PHPSTORM

添加 debug 配置,选择刚刚创建的 Server

选中 debug 配置,在代码中打断,点击小虫子开始调试。

PS: 如果使用虚拟机中 Linux,想要在本机通过浏览器访问虚拟机中的项目,需要在 Nginx 中将项目 ip 设置为虚拟机的 ip,而不是 127.0.0.1。如果多个项目怎么办呢?IP 相同,用不同的端口号区别不同的项目。

正文完
 0