概述
以前做PHP时搭建服务器时整理的文档,现将它与大家分享。本文描述PHP环境的搭建步骤,以及配置过程;形成一个能够通过IDE进行单步调试的开发测试环境,节省开发时间。
软件准备
Windows7 64位系统
软件包
php-5.5.1-nts-Win32-VC11-x64
eclipse-php-helios-SR2-win32-x86_64
nginx-1.4.2
php_xdebug-2.2.3-5.5-vc11-nts-x86_64.dll
环境搭建
软件包均使用的是绿色版,可以打包直接拷贝(由于当前配置的机器是64位,32位需要重新配置)。
HTTP server
当前安装使用Nginx,也可以使用其他的Server,可以在此补充。
Nginx
配置使其支持PHP请求,找到如下所示首行的文本,去掉这块的注释(删除#号);把标记为红色的/scripts改为”$document_root”,这里的”$document_root”就是指前面”root”所指的站点路径。
3 | fastcgi_pass 127.0.0.1:9000; |
4 | fastcgi_index index.php; |
5 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
Nginx使用PHP需要使用CGI,所以PHP和Nginx都需要配置CGI参数。
PHP
PHP主要配置三个方面,一个是扩展包,另一个是关于CGI参数的解析,还有一个是关于与eclipse联合单步调试的配置。
扩展包
1 | ; extension_dir = "ext" 改为 |
CGI参数修正
XDebug扩展
将下载的XDebug扩展的dll放到php的ext文件夹中,编辑php.ini,在最后添加如下的配置:
2 | zend_extension = php_xdebug-2.2.3-5.5-vc11-nts-x86_64.dll |
4 | ;zend_extension_ts = php_xdebug-2.2.3-5.5-vc11-nts-x86_64.dll |
5 | xdebug.remote_enable= true |
6 | xdebug.remote_host=127.0.0.1 |
8 | xdebug.remote_mode = req |
9 | xdebug.remote_handler=dbgp |
XDebug配置成功后调用phpinfo会显示有Xdebug运行,如果没有如图 31所示的Xdebug信息则说明配置失败。

图 31:XDebug配置后phpinfo显示
Eclipse
运行
Eclipse运行时使用的是jre运行,jre已经放在eclipse配置文件中。
eclipse.ini中添加如下配置(jre放在eclipse根目录下,下载的jre有版本号,此配置中已经把版本号删除):
注:如果电脑上已经安装jdk,可以不用下载安装jre,也可以不用修改配置文件。
配置单步调试
在Window -> Preferences窗口的左边选择PHP -> Debug(如图 32),在窗口右边的PHP Debugger这一项中选择XDebug,这个选项的右边有个Configure链接,点进去可以对XDebug进行设置,请确保XDebug使用的端口号与php.ini文件中指定的相同(通常为9001)。

图 32:调试选项
调试的使用
打开 Eclipse ,新建立一个PHP Project,我继续建立一个测试项目,打开 index.php 页面。选择 Eclipse 菜单里的 Run –>Run Configurations,设置一下:

图 33:运行配置选项卡

图 34:开始调试
其他
自动运行和停止脚本
在启动脚本中,由于windows不能像Linux那样用&符号将程序在后头运行,所以在需要使用RunHiddenConsole工具,这样就能让windows程序在后台运行。启动脚本如下:
1 | echo Starting PHP FastCGI... |
2 | RunHiddenConsole D:/web/php-5.5.1-nts/php-cgi.exe -b 127.0.0.1:9000 -c D:/web/php-5.5.1-nts/php.ini |
4 | RunHiddenConsole D:/web/nginx-1.4.2/nginx.exe -p D:/web/nginx-1.4.2 |
停止脚本:
3 | taskkill /F /IM nginx.exe > nul |
4 | echo Stopping PHP FastCGI... |
5 | taskkill /F /IM php-cgi.exe > nul |
遇到的问题和解决方案
Php不能运行,提示缺少DLL错误
这个是由于系统没有安装VS造成的,在PHP的下载首页可以看到提示到微软的官网上下载VC11的补丁;
不能断点调试
由于php和eclipse的配置造成的。一个是端口的冲突,由于FastCGI使用的是9000端口,按照网上的默认配置XDebug还是使用9000端口,在保证端口能够使用的情况下还要注意端口不要产生冲突;另一个是因为XDebug配置是使用的是extension参数而不是使用zend_extension。
参考资料
说明:本文中的图片也引用于上面两个资料,而不是自己配置时实际执行时截屏,在配置过程中仅有版本号不同,其余均与两个资料中的情况相同。