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

Reply via email to