thetaphi Mon Aug 4 08:46:03 2003 EDT
Modified files:
/php-src/sapi/nsapi nsapi-readme.txt nsapi.c
Log:
Give user the chance to support nsapi_virtual() in newer servers by adding parameter
server_lib to php5_init (windows only)
Index: php-src/sapi/nsapi/nsapi-readme.txt
diff -u php-src/sapi/nsapi/nsapi-readme.txt:1.9
php-src/sapi/nsapi/nsapi-readme.txt:1.10
--- php-src/sapi/nsapi/nsapi-readme.txt:1.9 Thu Jul 24 13:46:36 2003
+++ php-src/sapi/nsapi/nsapi-readme.txt Mon Aug 4 08:46:03 2003
@@ -118,4 +118,33 @@
translated URI are in the variables $_SERVER['PATH_INFO'] and
$_SERVER['PATH_TRANSLATED'].
-$Id: nsapi-readme.txt,v 1.9 2003/07/24 17:46:36 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 php5_init in magnus.conf:
+
+ Init fn=php5_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.10 2003/08/04 12:46:03 thetaphi Exp $
Index: php-src/sapi/nsapi/nsapi.c
diff -u php-src/sapi/nsapi/nsapi.c:1.54 php-src/sapi/nsapi/nsapi.c:1.55
--- php-src/sapi/nsapi/nsapi.c:1.54 Fri Aug 1 07:09:11 2003
+++ php-src/sapi/nsapi/nsapi.c Mon Aug 4 08:46:03 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: nsapi.c,v 1.54 2003/08/01 11:09:11 andrey Exp $ */
+/* $Id: nsapi.c,v 1.55 2003/08/04 12:46:03 thetaphi Exp $ */
/*
* PHP includes
@@ -203,7 +203,7 @@
NULL,
NULL,
PHP_MINFO(nsapi),
- "$Revision: 1.54 $",
+ "$Revision: 1.55 $",
STANDARD_MODULE_PROPERTIES
};
/* }}} */
@@ -229,6 +229,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
@@ -246,10 +250,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, "php5_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;
@@ -781,6 +793,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();
@@ -790,14 +809,18 @@
/*********************************************************
/ init SAF
/
-/ Init fn="php5_init" [php_ini="/path/to/php.ini"]
+/ Init fn="php5_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 php5_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 */
@@ -812,9 +835,17 @@
core_globals = ts_resource(core_globals_id);
/* look if php_ini parameter is given to php5_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 php5_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