codename::boilingbit www.boilingbit.com/blog

12二/122

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)

by 标签: 发表评论
评论 (2) 引用 (0)
  1. 服务器在国外吗?怎么有时还得翻墙才能访问到?? 昨晚上还以为是电信网服务器,我家用联通的宽带打不开,今天上午在公司电信宽带也打不开。。。 后来搞代理才进来。。。 另外,apache的那几个数据库的扩展我也研究着编译出来了。。。 :wink:
    • 好 :cheerful: 是在国外,便宜,功能强,服务好,没国内这么黑。不过从国内访问比较慢,有时会被封。

Leave a comment

(required)

:alien: :angel: :angry: :blink: :blush: :cheerful: :cool: :cwy: :devil: :dizzy: :ermm: :face: :getlost: :biggrin: :happy: :heart: :kissing: :lol: :ninja: :pinch: :pouty: :sad: :shocked: :sick: :sideways: :silly: :sleeping: :smile: :tongue: :unsure: :w00t: :wassat: :whistle: :wink: :wub:

还没有引用.