summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2003-12-06 16:04:34 +0000
committerWez Furlong <wez@php.net>2003-12-06 16:04:34 +0000
commitfcdda2e8f8182a38404e3e5db2bb560a9348cd17 (patch)
tree528497115f4676ae418feb8a0e1c105ecc1c440b
parent45eb5a8d03cdf72f6fc01117ecf372236fce83f6 (diff)
downloadphp-git-fcdda2e8f8182a38404e3e5db2bb560a9348cd17.tar.gz
Fix a problem resolving the php.ini path under win32 terminal services environment.
Remove config-file-path option from configure under win32; it is not used except to display what might have been chosen, so lets default to the getenv() thingy.
-rw-r--r--ext/standard/config.w329
-rw-r--r--main/php_ini.c26
-rw-r--r--win32/build/config.w32.h.in1
3 files changed, 27 insertions, 9 deletions
diff --git a/ext/standard/config.w32 b/ext/standard/config.w32
index 9658ed6aeb..d587dedcc6 100644
--- a/ext/standard/config.w32
+++ b/ext/standard/config.w32
@@ -4,15 +4,6 @@
ARG_WITH("config-file-scan-dir", "Dir to check for additional php ini files", "");
AC_DEFINE("PHP_CONFIG_FILE_SCAN_DIR", PHP_CONFIG_FILE_SCAN_DIR);
-ARG_WITH("config-file-path", "Where to find php.ini",
- '(getenv("SystemRoot"))?getenv("SystemRoot"):""');
-
-if (PHP_CONFIG_FILE_PATH == null) {
- AC_DEFINE("PHP_CONFIG_FILE_PATH", PHP_CONFIG_FILE_PATH, null, false);
-} else {
- AC_DEFINE("PHP_CONFIG_FILE_PATH", PHP_CONFIG_FILE_PATH);
-}
-
EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \
crc32.c crypt.c cyr_convert.c datetime.c dir.c dl.c dns.c exec.c \
file.c filestat.c formatted_print.c fsock.c head.c html.c image.c \
diff --git a/main/php_ini.c b/main/php_ini.c
index f4d2d9a0f1..59d5ce7053 100644
--- a/main/php_ini.c
+++ b/main/php_ini.c
@@ -379,6 +379,32 @@ int php_init_config()
strcat(php_ini_search_path, default_location);
}
efree(default_location);
+
+ {
+ /* For people running under terminal services, GetWindowsDirectory will
+ * return their personal Windows directory, so lets add the system
+ * windows directory too */
+ typedef UINT (WINAPI *get_system_windows_directory_func)(char *buffer, UINT size);
+ static get_system_windows_directory_func get_system_windows_directory = NULL;
+ HMODULE kern;
+
+ if (get_system_windows_directory == NULL) {
+ kern = LoadLibrary("kernel32.dll");
+ if (kern) {
+ get_system_windows_directory = (get_system_windows_directory_func)GetProcAddress(kern, "GetSystemWindowsDirectoryA");
+ }
+ }
+ if (get_system_windows_directory != NULL) {
+ default_location = (char *) emalloc(MAXPATHLEN + 1);
+ if (0 < get_system_windows_directory(default_location, MAXPATHLEN)) {
+ if (*php_ini_search_path) {
+ strcat(php_ini_search_path, paths_separator);
+ }
+ strcat(php_ini_search_path, default_location);
+ }
+ efree(default_location);
+ }
+ }
#else
default_location = PHP_CONFIG_FILE_PATH;
if (*php_ini_search_path) {
diff --git a/win32/build/config.w32.h.in b/win32/build/config.w32.h.in
index 02607f1672..4aabd98f11 100644
--- a/win32/build/config.w32.h.in
+++ b/win32/build/config.w32.h.in
@@ -4,6 +4,7 @@
*/
/* Default PHP / PEAR directories */
+#define PHP_CONFIG_FILE_PATH (getenv("SystemRoot"))?getenv("SystemRoot"):""
#define CONFIGURATION_FILE_PATH "php.ini"
#define PEAR_INSTALLDIR "@PREFIX@\\pear"
#define PHP_BINDIR "@PREFIX@"