What kind of extensions would you suggest people use? index.php51 ?
- Ron "Edin Kadribasic" <[EMAIL PROTECTED]> schreef in bericht news:[EMAIL PROTECTED] > Hi Richard, > > I think your ini changes should be put into PHP. I have a small feature > request. Since we're modifying the way ini files are picked up we might > as well add support for minor version numbers since PHP is not binary > compatible between minor version releases. That would allow people to > run 5.0 5.1 and 5.2 in the same system. > > Edin > > > Richard Quadling wrote: >> Having used regmon, in conjunction with the source (still learning my >> way around the source), PHP accesses the following registry keys : >> >> HKLM\SOFTWARE\PHP\IniFilePath >> HKLM\SOFTWARE\PHP\Per Directory Values >> >> >> What naming convention would you expect to be used for version >> specific settings. I would think a new subkey ... >> >> (Original) >> HKLM\SOFTWARE\PHP\IniFilePath >> HKLM\SOFTWARE\PHP\Per Directory Values >> >> (Additional) >> HKLM\SOFTWARE\PHP\V4\IniFilePath >> HKLM\SOFTWARE\PHP\V4\Per Directory Values >> >> HKLM\SOFTWARE\PHP\V5\IniFilePath >> HKLM\SOFTWARE\PHP\V5\Per Directory Values >> >> HKLM\SOFTWARE\PHP\V6\IniFilePath >> HKLM\SOFTWARE\PHP\V6\Per Directory Values >> >> etc. >> >> The version specific IniFilePath will be added to the search path >> BEFORE the default IniFilePath. >> >> The version specific PerDirectoryValues (if present) would override >> the default values (if present). >> >> >> >> This is a pretty advanced set of rules for configuring ini settings! >> >> You can set them globally (either in a INI file or the registry), >> based upon the major version of PHP (INI file or registry), where the >> PHP file is (registry) and for the specific PHP file (registry), as >> well as things like Apache .htaccess or even within the PHP code >> itself. >> >> >> If this is all OK, I'll talk to Nuno about incorporating the changes >> to the documentation. >> >> And then, I may leave you all alone! (Well, WIBNI!). >> >> >> >> >> On 16/07/06, Richard Quadling <[EMAIL PROTECTED]> wrote: >>> From my initial look, it seems that the registry only contains the a >>> path to the ini file, not the actual ini file itself. >>> >>> If that is the case, then the patch still stands. >>> >>> Unless, specific settings can be made to the registry... which makes >>> more sense. >>> >>> So. More looking. >>> >>> On 16/07/06, Richard Quadling <[EMAIL PROTECTED]> wrote: >>> > Even with the FastCGI, you still need to differentiate the versions. >>> > It wouldn't matter what SAPI was used. The same SAPI cannot be used >>> > for more than 1 version of PHP. >>> > >>> > I'll take a look at the registry options... >>> > >>> > Thanks for looking in everyone. >>> > >>> > Richard. >>> > >>> ----- >>> Richard Quadling >>> Zend Certified Engineer : >>> http://zend.com/zce.php?c=ZEND002498&r=213474731 >>> >> >> >> ------------------------------------------------------------------------ >> >> Index: main/php_ini.c >> =================================================================== >> RCS file: /repository/php-src/main/php_ini.c,v >> retrieving revision 1.143 >> diff -u -r1.143 php_ini.c >> --- main/php_ini.c 4 Jul 2006 06:38:32 -0000 1.143 >> +++ main/php_ini.c 17 Jul 2006 10:05:50 -0000 >> @@ -318,7 +318,17 @@ >> >> #ifdef PHP_WIN32 >> /* Add registry location */ >> - reg_location = GetIniPathFromRegistry(); >> + /* RAQ : Add version specific registry location */ >> + reg_location = GetIniPathFromRegistry(1); >> + if (reg_location != NULL) { >> + if (*php_ini_search_path) { >> + strcat(php_ini_search_path, paths_separator); >> + } >> + strcat(php_ini_search_path, reg_location); >> + efree(reg_location); >> + } >> + /* RAQ : Get non-version specific registry location : reg_location = >> GetIniPathFromRegistry(); */ >> + reg_location = GetIniPathFromRegistry(0); >> if (reg_location != NULL) { >> if (*php_ini_search_path) { >> strcat(php_ini_search_path, paths_separator); >> @@ -428,6 +438,17 @@ >> } >> } >> } >> + /* RAQ : Search php%php-major-version%-%sapi-module-name%.ini file in >> search path */ >> + if (!fh.handle.fp) { >> + const char *fmt = "php%d-%s.ini"; >> + char *ini_fname = emalloc(strlen(fmt) + strlen(sapi_module.name) + >> (PHP_MAJOR_VERSION < 10 ? 1 : 2)); >> + sprintf(ini_fname, fmt, PHP_MAJOR_VERSION, sapi_module.name); >> + fh.handle.fp = php_fopen_with_path(ini_fname, "r", php_ini_search_path, >> &php_ini_opened_path TSRMLS_CC); >> + efree(ini_fname); >> + if (fh.handle.fp) { >> + fh.filename = php_ini_opened_path; >> + } >> + } >> /* Search php-%sapi-module-name%.ini file in search path */ >> if (!fh.handle.fp) { >> const char *fmt = "php-%s.ini"; >> Index: win32/php_registry.h >> =================================================================== >> RCS file: /repository/php-src/win32/php_registry.h,v >> retrieving revision 1.4 >> diff -u -r1.4 php_registry.h >> --- win32/php_registry.h 19 Oct 2003 10:22:21 -0000 1.4 >> +++ win32/php_registry.h 17 Jul 2006 10:05:51 -0000 >> @@ -3,6 +3,7 @@ >> >> >> void UpdateIniFromRegistry(char *path TSRMLS_DC); >> -char *GetIniPathFromRegistry(); >> +/* RAQ : Allow for version specificness */ >> +char *GetIniPathFromRegistry(int version_specific); >> >> #endif /* PHP_REGISTRY_H */ >> Index: win32/registry.c >> =================================================================== >> RCS file: /repository/php-src/win32/registry.c,v >> retrieving revision 1.16 >> diff -u -r1.16 registry.c >> --- win32/registry.c 14 Mar 2005 12:42:05 -0000 1.16 >> +++ win32/registry.c 17 Jul 2006 10:05:51 -0000 >> @@ -9,7 +9,26 @@ >> HKEY MainKey; >> char *strtok_buf = NULL; >> >> - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY "\\Per Directory >> Values", 0, KEY_READ, &MainKey)!=ERROR_SUCCESS) { >> + /* RAQ : Version specificness */ >> + int version_specific; >> + char * reg_key; >> + >> + /* RAQ : Get default and then version specific entries. */ >> + for (version_specific = 0 ; version_specific < 2 ; ++version_specific) >> { >> + >> + /* RAQ : Build key which may include version specificness */ >> + DWORD keylen = strlen(PHP_REGISTRY_KEY); >> + if (1 == version_specific) { >> + reg_key = (char *) emalloc(strlen(PHP_REGISTRY_KEY) + strlen("\\V\\Per >> Directory Values") + (PHP_MAJOR_VERSION < 10 ? 1 : 2)); >> + sprintf(reg_key, "%c\\V%d\\Per Directory Values", PHP_REGISTRY_KEY, >> PHP_MAJOR_VERSION); >> + } else { >> + reg_key = (char *) emalloc(strlen(PHP_REGISTRY_KEY) + strlen("\\Per >> Directory Values")); >> + sprintf(reg_key, "%c\\Per Directory Values", PHP_REGISTRY_KEY); >> + } >> + /* RAQ END : Continue with appropriate key. */ >> + >> + /* RAQ : Use potentially version specific registry key : if >> (RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY "\\Per Directory >> Values", 0, KEY_READ, &MainKey)!=ERROR_SUCCESS) { */ >> + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg_key, 0, KEY_READ, >> &MainKey)!=ERROR_SUCCESS) { >> return; >> } >> >> @@ -55,7 +74,7 @@ >> HKEY hKey; >> DWORD lType; >> DWORD values = 0, max_name = 0, max_value = 0, i = 0; >> - >> + >> if (p>path) { >> *(p-1) = '\\'; /* restore the slash */ >> } >> @@ -91,16 +110,29 @@ >> } >> RegCloseKey(MainKey); >> efree(orig_path); >> + } /* RAQ : End of version specificness loop */ >> } >> >> #define PHPRC_REGISTRY_NAME "IniFilePath" >> >> -char *GetIniPathFromRegistry() >> +char *GetIniPathFromRegistry(int version_specific) >> { >> char *reg_location = NULL; >> HKEY hKey; >> - >> - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY, 0, KEY_READ, >> &hKey) == ERROR_SUCCESS) { >> + char *reg_key = NULL; >> + >> + /* RAQ : Build key which may include version specificness */ >> + DWORD keylen = strlen(PHP_REGISTRY_KEY); >> + if (1 == version_specific) { >> + reg_key = (char *) emalloc(strlen(PHP_REGISTRY_KEY) + strlen("\\V") + >> (PHP_MAJOR_VERSION < 10 ? 1 : 2)); >> + sprintf(reg_key, "%c\\V%d", PHP_REGISTRY_KEY, PHP_MAJOR_VERSION); >> + } else { >> + reg_key = (char *) emalloc(strlen(PHP_REGISTRY_KEY)); >> + sprintf(reg_key, "%c", PHP_REGISTRY_KEY); >> + } >> + >> + /* RAQ : Use potentially version specific registry key : >> if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY, 0, KEY_READ, &hKey) >> == ERROR_SUCCESS) {*/ >> + if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg_key, 0, KEY_READ, &hKey) == >> ERROR_SUCCESS) { >> DWORD buflen = MAXPATHLEN; >> reg_location = emalloc(MAXPATHLEN+1); >> if(RegQueryValueEx(hKey, PHPRC_REGISTRY_NAME, 0, NULL, reg_location, >> &buflen) != ERROR_SUCCESS) { >> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php