因为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下如何做呢?

解决方案 »

  1.   

    建议 README.WIN32-BUILD-SYSTEM 文件首先看看配置的帮助,选项叫什么名字
    cscript /nologo configure.js --help
    配置完后 nmakeps: 要在VS的控制台下操作(环境变量问题),版本不低于vs2003.net,platform sdk也要安装(如果没有)
      

  2.   

    应该不至于这么复杂吧?集成版本的xampp,php.ini就不在c:\windows\php.ini这个路径下的。 
      

  3.   


    lz不是不知道在哪里,是需要多个版本的php共存,配置文件需要多份,
    而默认的路径都在windows下,不同的配置文件只能用一个pathname,有冲突
      

  4.   

    应该不至于这么复杂吧? 集成版本的xampp,php.ini就不在c:\windows\php.ini这个路径下的。 xampp这是apache版的。不在讨论区内哦。这种方式我知道怎么配置。
    do_fork
     
    (角马不是马) 理解了我的意思。给的方法很中肯。我试试先。
      

  5.   

    main/config.w32.h
    ----
    #define PHP_CONFIG_FILE_PATH (getenv("SystemRoot"))?getenv("SystemRoot"):""
    #define CONFIGURATION_FILE_PATH "php.ini"
      

  6.   

    调用是在 main/php_ini.cfh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC);
      

  7.   

    http://hi.baidu.com/jlzan1314/blog/item/6e7d97f24ffc87c20a46e0d1.html  看看我blog的这篇文章,没必要那么复杂吧.
      

  8.   

    楼主问的是IISIIS 中 PHPIniDir 配置写在哪儿
      

  9.   

    我已经用nmake编译成了。
    但是编译出来的dll没有php5isapi.dll,只有php5ts.dll
      

  10.   

    已解决了。结贴了。
    手工编译改变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