Windows下编译PHP
Windows下编译 php-5.3.9
参考 http://wiki.php.net/internals/windows/stepbystepbuild
去 http://windows.php.net/downloads/php-sdk/ 下载
http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip
http://windows.php.net/downloads/php-sdk/deps-5.3-vc9-x86.7z
把 php-sdk-binary-tools-20110915.zip 解压到比如 E:\Softwares\php-sdk,里面有3个子目录bin,script和share。
这是编译需要的一些工具和脚本。
运行 winsdk 7.1 的Command Line,执行 setenv /x86 /win7 /release
还需要执行一下VC提供的设置环境变量的命令:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
或者直接用VC的Command Line也行(就不要执行setenv /x86 /win7 /release这个了,也没什么关系)。
然后
cd E:\Softwares\php-sdk\
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat php53dev
就会在php-sdk目录下生成php53dev这个子目录,
再把 deps-5.3-vc9-x86.7z 解压到 E:\Softwares\php-sdk\php53dev\vc9\x86\deps
把php源码解压到
E:\Softwares\php-sdk\php53dev\vc9\x86\php-5.3.9
cd E:\Softwares\php-sdk\php53dev\vc9\x86\php-5.3.9
buildconf
然后可以执行
configure --help
看看可以设置的参数
参数很多,我们暂时用这个,尽量少加些参数,以后遇到问题,再加别的
configure --disable-all --enable-cli --enable-apache2-2filter --enable-apache2-2handler
然后开始编译:
nmake
编译完成
cd Release_TS
php -m 看看,列出了静态编译到php里的一些模块,比如类似这样:
[PHP Modules]
Core
date
ereg
pcre
Reflection
SPL
standard
[Zend Modules]
然后可以看到
E:\Softwares\php-sdk\php53dev\vc9\x86\php-5.3.9
下面有
php.ini-production
php.ini-development
我们就用开发版本的设置文件,把 php.ini-development 复制为 php.ini
然后编辑一下apache的设置文件httpd.conf
在很多LoadModule的地方,加入一行
LoadModule php5_module "E:/Softwares/php-sdk/php53dev/vc9/x86/php-5.3.9/Release_TS/php5apache2_2.dll"
搜索<IfModule mime_module>,在</IfModule>前面加入:
AddHandler application/x-httpd-php .php
在文件最后再加入:
# configure the path to php.ini
PHPIniDir "E:\Softwares\php-sdk\php53dev\vc9\x86\php-5.3.9\php.ini"
再搜索
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
添加index.php为默认索引页名字
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
好了,保存设置文件,重启apache服务器,然后在 E:\Softwares\apache\htdocs 下面创建一个 index.php,内容为
<?php
phpinfo();
?>
浏览 http://localhost,可以看到php已经执行成功!
不过注意,这里有个安全问题,如果把index.php改名为index.php.txt,也可以执行,正确的做法是,httpd.conf里,不要添加
AddHandler application/x-httpd-php .php
这行,而是在最后加入
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
你再试试,.php.txt就不会被执行了。
© 2012, codename::boilingbit. 版权所有. 署名-非商业性使用-相同方式共享 (by-nc-sa)
2012年02月13日 20:32
2012年02月13日 21:39