thetaphi Mon Aug 4 08:46:38 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/sapi/nsapi nsapi-readme.txt nsapi.c Log: MFH Index: php-src/sapi/nsapi/nsapi-readme.txt diff -u php-src/sapi/nsapi/nsapi-readme.txt:1.3.8.6 php-src/sapi/nsapi/nsapi-readme.txt:1.3.8.7 --- php-src/sapi/nsapi/nsapi-readme.txt:1.3.8.6 Thu Jul 24 13:46:57 2003 +++ php-src/sapi/nsapi/nsapi-readme.txt Mon Aug 4 08:46:38 2003 @@ -118,4 +118,33 @@ translated URI are in the variables $_SERVER['PATH_INFO'] and $_SERVER['PATH_TRANSLATED']. -$Id: nsapi-readme.txt,v 1.3.8.6 2003/07/24 17:46:57 thetaphi Exp $ + +Note about nsapi_virtual() and subrequests +------------------------------------------ + +The NSAPI module now supports the nsapi_virtual() function (alias: virtual()) +to make subrequests on the webserver and insert the result in the webpage. +The problem is, that this function uses some undocumented features from +the NSAPI library. + +Under Unix this is not a problem, because the module automatically looks +for the needed functions and uses them if available. If not, nsapi_virtual() +is disabled. + +Under Windows limitations in the DLL handling need the use of a automatic +detection of the most recent ns-httpdXX.dll file. This is tested for servers +till version 6.0. If a newer version of the SunONE server is used, the detection +fails and nsapi_virtual() is disabled. + +If this is the case, try the following: +Add the following parameter to php4_init in magnus.conf: + + Init fn=php4_init ... server_lib="ns-httpdXX.dll" + +where XX is the correct DLL version number. To get it, look in the server-root +for the correct DLL name. The DLL with the biggest filesize is the right one. + +But be warned: SUPPORT FOR nsapi_virtual() IS EXPERIMENTAL !!! + + +$Id: nsapi-readme.txt,v 1.3.8.7 2003/08/04 12:46:38 thetaphi Exp $ Index: php-src/sapi/nsapi/nsapi.c diff -u php-src/sapi/nsapi/nsapi.c:1.28.2.20 php-src/sapi/nsapi/nsapi.c:1.28.2.21 --- php-src/sapi/nsapi/nsapi.c:1.28.2.20 Fri Aug 1 07:24:20 2003 +++ php-src/sapi/nsapi/nsapi.c Mon Aug 4 08:46:38 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: nsapi.c,v 1.28.2.20 2003/08/01 11:24:20 sniper Exp $ */ +/* $Id: nsapi.c,v 1.28.2.21 2003/08/04 12:46:38 thetaphi Exp $ */ /* * PHP includes @@ -208,7 +208,7 @@ NULL, NULL, PHP_MINFO(nsapi), - "$Revision: 1.28.2.20 $", + "$Revision: 1.28.2.21 $", STANDARD_MODULE_PROPERTIES }; /* }}} */ @@ -234,6 +234,10 @@ * the server only by wrapping the function table nothing else. So choose * the newest one found in process space for dynamic linking */ static char *nsapi_dlls[] = { "ns-httpd40.dll", "ns-httpd36.dll", "ns-httpd35.dll", "ns-httpd30.dll", NULL }; +/* if user specifies an other dll name by server_lib parameter + * it is placed in the following variable and only this DLL is + * checked for the servact_* functions */ +char *nsapi_dll = NULL; #endif /* {{{ php_nsapi_init_dynamic_symbols @@ -251,10 +255,18 @@ #ifdef PHP_WIN32 register int i; DL_HANDLE module = NULL; - /* find a LOADED dll module from nsapi_dlls */ - for (i=0; nsapi_dlls[i]; i++) { - if (module = GetModuleHandle(nsapi_dlls[i])) { - break; + if (nsapi_dll) { + /* try user specified server_lib */ + module = GetModuleHandle(nsapi_dll); + if (!module) { + log_error(LOG_WARN, "php4_init", NULL, NULL, "Cannot find DLL specified by server_lib parameter: %s", nsapi_dll); + } + } else { + /* find a LOADED dll module from nsapi_dlls */ + for (i=0; nsapi_dlls[i]; i++) { + if (module = GetModuleHandle(nsapi_dlls[i])) { + break; + } } } if (!module) return; @@ -786,6 +798,13 @@ if (nsapi_sapi_module.php_ini_path_override) { free(nsapi_sapi_module.php_ini_path_override); } + +#ifdef PHP_WIN32 + if (nsapi_dll) { + free(nsapi_dll); + nsapi_dll = NULL; + } +#endif tsrm_shutdown(); @@ -795,14 +814,18 @@ /********************************************************* / init SAF / -/ Init fn="php4_init" [php_ini="/path/to/php.ini"] +/ Init fn="php4_init" [php_ini="/path/to/php.ini"] [server_lib="ns-httpdXX.dll"] / Initialize the NSAPI module in magnus.conf / +/ php_ini: gives path to php.ini file +/ server_lib: (only Win32) gives name of DLL (without path) to look for +/ servact_* functions +/ /*********************************************************/ int NSAPI_PUBLIC php4_init(pblock *pb, Session *sn, Request *rq) { php_core_globals *core_globals; - char *ini_path; + char *strval; int threads=128; /* default for server */ /* fetch max threads from NSAPI and initialize TSRM with it */ @@ -817,9 +840,17 @@ core_globals = ts_resource(core_globals_id); /* look if php_ini parameter is given to php4_init */ - if (ini_path = pblock_findval("php_ini", pb)) { - nsapi_sapi_module.php_ini_path_override = strdup(ini_path); + if (strval = pblock_findval("php_ini", pb)) { + nsapi_sapi_module.php_ini_path_override = strdup(strval); + } + +#ifdef PHP_WIN32 + /* look if server_lib parameter is given to php4_init + * (this disables the automatic search for the newest ns-httpdXX.dll) */ + if (strval = pblock_findval("server_lib", pb)) { + nsapi_dll = strdup(strval); } +#endif /* start SAPI */ sapi_startup(&nsapi_sapi_module);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php