粗略翻译自 Installing PEAR and PHPUnit on WAMP and Windows 7,略有增改。
有需要安装 PHPUnit 来测试脚本,搜索到一篇文章,记录下来。
注意:
PHP 5.2 的目录下貌似是有 PEAR 目录的,也有
go-pear.bat,这个你可以自行研究下,看是否可用。
我这里测试的是 PHP 5.4,默认不自带 go-pear.bat,所以,如果你是 5.2
的话,这个教程是否可用我没有验证。
先安装 PEAR
由于 PHPUnit 依赖 PEAR,我们先把 PEAR 安装上。
修改 php.ini
在 Windows 上安装 PEAR 也比较简单,首先我们来设置下 php.ini(一般在 C:Windowsphp.ini,如果是绿色安装,则在你的套件目录下查找即可)中的一个参数:
phar.require_hash = Off
默认是注释掉的,我们把前面的分号去掉,然后将 On 改为 Off。
下载并安装 go-pear.phar
接下来到 http://pear.php.net/go-pear.phar 下载该文件,放到你的 PHP
安装目录,以 D:SERVERPHP
为例。
打开 CMD 命令提示符窗口,输入如下:
cd /D D:SERVERPHP php go-pear.phar
如不出所料,安装流程应该没有问题,其中的各项参数配置你懂的话就修改,不懂的话就直接回车或 Y 等等操作。
注意:
第一步问你是否是安装一个全局的 PEAR 还是本地的(... 不清楚这个怎么翻译合适),推荐输入
local,测试发现仅仅是 pear.ini 的位置不同... 但推荐放在 PHP 目录,而不是 C:Windows 目录。
最后一个步骤是问你是否修改
php.ini 中的 include_path,确认即可。
修改完 php.ini 后,整个安装流程结束,我们重启下 Apache / Nginx。
修改系统环境变量,加入 PEAR 的安装位置
为了让我们每次用的时候不那么蛋疼的敲入 D:SERVERPHPpear
ooxx...
,而是更优雅的敲入 pear install ...
,我们得设置下环境变量。
打开环境变量设置对话框(计算机 - 右键 - 属性 - 高级系统设置 - 环境变量),在系统变量处,找到 PATH 这个项,双击,加入:
;D:SERVERPHP
注意和你的 PHP 安装位置保持一致,然后要和前面的配置有分号分隔。
PATH
修改确定后,点击系统变量处的 新建 按钮,再加一个项,变量名为 PHP_PEAR_PHP_BIN
,变量值为 D:SERVERPHPphp.exe
,仍然要注意和你的安装位置保持一致。
确认安装无误
打开一个 CMD 窗口,输入:
set %PATH% = ‘.‘
然后关闭 CMD 窗口...
好吧我不是在和你开玩笑,因为 Windows 的环境变量需要重启才能生效,我们这里利用了一个技巧:
当你尝试在
CMD 下修改 %PATH% 后,Windows 在下个回话会重新读取 %PATH%,这样就达到我们更新 %PATH% 的目的了。
现在重新打开一个 CMD 窗口,输入:
pear
看到 PEAR 的帮助信息了么,好,PEAR 安装完成。
等等!
测试发现,你以为安装完成了?其实不然。
当然,如果你不在意 PEAR 把它的安装文件搞得满硬盘都是的话,你可以跳过这个步骤。
经过上面坑爹的配置后,我兴致勃勃的运行了下面一节的命令,结果发现,O Shit,PEAR 面不改色的把它的包安装进了 C:php
目录下。
我不是告诉你安装在我设定的 D:SERVERPHP 目录下了么?嗯?你怎么能这么厚脸皮呢?嗯?
我们来看下 PEAR 的配置,打开 CMD,输入:
pear config-show
于是,你发现,你之前的对 PEAR 多达 12 项的配置基本是徒劳的,丫仍然是默认值...
好吧,一项项的手动改回去:
pear config-set php_dir D:SERVERPHPpear ...
最后,为了让之前安装的包使用新的配置,我们需要强制重新安装一次:
pear upgrade --force
好,终于安装完成了。
安装 PHPUnit
剩下的就简单多了。
打开 CMD,输入以下命令:
pear upgrade pear pear channel-discover components.ez.no pear channel-discover pear.phpunit.de pear channel-discover pear.symfony-project.com pear install --alldeps phpunit/PHPUnit
等待安装完成,我们输入 phpunit
来验证安装:
PHPUnit 3.6.10 by Sebastian Bergmann. Usage: phpunit [switches] UnitTest [UnitTest.php] phpunit [switches] --log-junit Log test execution in JUnit XML format to file. --log-tap Log test execution in TAP format to file. --log-json Log test execution in JSON format. --coverage-clover Generate code coverage report in Clover XML format. --coverage-html
嗯,可以收工了。