因为windows下,iis默认的php.ini是搜索c:\windows\php.ini现在需要多版本共存,所以希望可以把php.ini改名成为php2.ini,php3.ini,php4.ini这样的或能改变路径不是c:\windows也行.现希望实现以上功能.只能寄望于自行编译php了.
环境如下:
php5.0(及以上版本)
win2003+iis6,isapi模式
vs2005编译器需要修改php5源码包的哪些文件..........有耐心的朋友给个方法.没耐心的高手稍点一下也可以.试过phprc,这个变量是所有php5共用的.不能区分开各版本用的php.iniapache的多版本共存,我会弄,只要指定不同的phpinidir就行了.但是这里不能采用.并且不是php4,php5这样的共存.举个例子php5.2.9和php5.2.10这样的共存.已经搞过在注册表里面inifilepath:5.2.9这样建多个键值.就像zend的文件夹那样为每一个版本建一个注册表键值.
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\IniFilePath -> c:\php5
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\2\IniFilePath -> c:\php5.2
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\2\9\IniFilePath -> c:\php5.2.9
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath -> c:\php4这种方法解决不了他加载mysql扩展这些问题.因为没有phprc,等的支持,没有办法区分开来libmysql.dll与之对应的php版本. 比如php5.1和php5.3所用的libmysql.dll可能就不同.
编译工具我知道是哪些的哦。我是问怎么修改php源文件,使编译出来php程序的文件的默认搜索路径变成非
\windows\php.ini
在linux下是很简单的。只要加上with-config-file-path即。但是windows下如何做呢?
环境如下:
php5.0(及以上版本)
win2003+iis6,isapi模式
vs2005编译器需要修改php5源码包的哪些文件..........有耐心的朋友给个方法.没耐心的高手稍点一下也可以.试过phprc,这个变量是所有php5共用的.不能区分开各版本用的php.iniapache的多版本共存,我会弄,只要指定不同的phpinidir就行了.但是这里不能采用.并且不是php4,php5这样的共存.举个例子php5.2.9和php5.2.10这样的共存.已经搞过在注册表里面inifilepath:5.2.9这样建多个键值.就像zend的文件夹那样为每一个版本建一个注册表键值.
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\IniFilePath -> c:\php5
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\2\IniFilePath -> c:\php5.2
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\2\9\IniFilePath -> c:\php5.2.9
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath -> c:\php4这种方法解决不了他加载mysql扩展这些问题.因为没有phprc,等的支持,没有办法区分开来libmysql.dll与之对应的php版本. 比如php5.1和php5.3所用的libmysql.dll可能就不同.
编译工具我知道是哪些的哦。我是问怎么修改php源文件,使编译出来php程序的文件的默认搜索路径变成非
\windows\php.ini
在linux下是很简单的。只要加上with-config-file-path即。但是windows下如何做呢?
cscript /nologo configure.js --help
配置完后 nmakeps: 要在VS的控制台下操作(环境变量问题),版本不低于vs2003.net,platform sdk也要安装(如果没有)
lz不是不知道在哪里,是需要多个版本的php共存,配置文件需要多份,
而默认的路径都在windows下,不同的配置文件只能用一个pathname,有冲突
do_fork
(角马不是马) 理解了我的意思。给的方法很中肯。我试试先。
----
#define PHP_CONFIG_FILE_PATH (getenv("SystemRoot"))?getenv("SystemRoot"):""
#define CONFIGURATION_FILE_PATH "php.ini"
但是编译出来的dll没有php5isapi.dll,只有php5ts.dll
手工编译改变php.ini路径有什么用呢?比如说:
你可以增加php扩展功能
你可以修改php.ini的默认位置不放到c:\windows\php.ini下面。开始之前,如果你装了vs2005,vs2003 vs2008一类的工具,他们的变量会抢占cl.exe变量。这些冲突你要自行解决,大部分属于环境变量问题。
要么先删除这些编译工具,要么重装系统,给他一个干净的vc6++安装环境。1.下载需要的文件
1.下载vc6++ sp6,约184M的rar包,解开来是iso
2.下载2003 platform sdk,分卷cab包,约13个。每个25M,共约384M
3.http://www.php.net/extra/win32build.zip包,必须的
4.http://www.php.net/extra/bindlib_w32.zip,必须的
5.http://pecl2.php.net/downloads/php-windows-builds/php-libs/binary-tools.zip,必须的
6.http://files.edin.dk/php/win32/zip.zip,所有支持包,下载了这个,不用下载libxml包
7.需要的编译的php源代码。是源代码,不是安装包。就是linux下面用的那些。
http://www.php.net/releases/
页面中以tar.bz2结尾,tar.gz的那些就是。请只下载5.x开头的版本。2、环境要求基于Windows NT的windows,w9x就别闹了。Visual Stdio C++ 6
Winxp,win2003(需要下载不同版本的platform sdk)
3、建立目录
1.c:\work
2.c:\work\win32build(win32build.zip解压)
3.c:\work\bindlib_w32(bindlib_w32.zip解压)
4.binary-tools.zip解压后放入win32build下的bin目录。
5.http://files.edin.dk/php/win32/zip.zip解压放到win32build目录下面
6.右键,我的电脑属性,高级,环境变量,在下面“系统变量”里面找到PATH双击,在最后面加上;c:\work\win32build\bin
前面的分号不要少了。
7.解压php源代码到c:\work\php-5.x
4、打开cmd窗口,转到 c:\work\php源代码目录输入buildconf得到configure.js文件cscript /nologo configure.js --enable-snapshot-build如果你没有下载http://files.edin.dk/php/win32/zip.zip这里的文件放进去,就不能用这个命令,不然会产生大量的编译错误。帮助命令,懂英文的自己看。编译过linux下的php一看就明白。cscript /nologo configure.js --help
5、开始编译输入nmake snap一般是报什么什么.h文件not found或找不到就是没有下载zip.zip文件包,或没有放对地方。
如果是编译cl.exe错误,就是环境变量设置不对或cl.exe冲突了。你安装了很多个编译器比如vs2003 vs2005什么的。
vc6的编译器是
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.如果你在cmd下输入cl回车,报命令找不到,或显示不是上面的。环境就配置不对。自行搞定去吧。几句话也说不清楚。edit by reynaldliu 2009.09.10