Re: [PHP4BETA] cvs: php4 /sapi/nsapi/ config.m4 nsapi-readme.txt nsapi.c
| From: | Mark Faine | Date: | Thu, 01 Jun 2000 15:38:11 +0000 |
| Subject: | Re: [PHP4BETA] cvs: php4 /sapi/nsapi/ config.m4 nsapi-readme.txt nsapi.c | ||
| References: | 1 | Groups: | php.version4 |
| Request: | Send a blank email to php-version4+get-16041@lists.php.net to get a copy of this message | ||
Is the following line a mistake:
#note place following two lines after mime types init!
> Init fn="load-modules"
funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
shlib="/php4/nsapiPHP4.dll"
This looks like windows? What do you put here for unix.
I have done all of this, but I am still getting the following error:
dlopen of /home/web_server/netscape/suitespot/bin/libphp4.so failed
(ld.so.1: ns-httpd: fatal: libstdc++.so.2.10.0: open failed: No such file
or directory)
My configuration information follows:
PHP4.0 cvs build from 5-31-00
Solaris 2.6
Netscape Enterprise Server 3.6
I used the following flags in the configure:
--enable-sigchild
--enable-libgcc
--enable-discard-path
--enable-magic-quotes
--enable-track-vars
--with-openssl
--with-oracle
--enable-trans-sid
--enable-memory-limit
--enable-versioning
--enable-sysvshm
--with-nsapi=path/to/my/netscape/server/root
""Anthony Whitehead"" <anthony.whitehead@rfv.sfa.se> wrote in message
news:cvsantw959692818@cvsserver...
> antw Tue May 30 06:20:18 2000 EDT
>
> Modified files:
> /php4/sapi/nsapi config.m4 nsapi-readme.txt nsapi.c
> Log:
> Altered NSAPI autoconf to check for location of include files
automatically, tested for Netscape 3.x and iPlanet 4.x.
> Added very basic variable support for usefull things such as PHP_SELF.
I'll extend this to supply this rest of the variables soon.
> Commited a patch to activate ZTS in the NSAPI module, this patch comes
from
> Jayakumar Muthukumarasamy.
>
>
> Index: php4/sapi/nsapi/config.m4
> diff -u php4/sapi/nsapi/config.m4:1.4 php4/sapi/nsapi/config.m4:1.5
> --- php4/sapi/nsapi/config.m4:1.4 Sun Apr 30 10:28:24 2000
> +++ php4/sapi/nsapi/config.m4 Tue May 30 06:20:18 2000
> @@ -1,4 +1,4 @@
> -dnl ## $Id: config.m4,v 1.4 2000/04/30 17:28:24 rasmus Exp $ -*- sh -*-
> +dnl ## $Id: config.m4,v 1.5 2000/05/30 13:20:18 antw Exp $ -*- sh -*-
>
> AC_MSG_CHECKING(for NSAPI support)
> AC_ARG_WITH(nsapi,
> @@ -13,13 +13,26 @@
> if test ! -d $PHP_NSAPI/bin ; then
> AC_MSG_ERROR(Please specify the path to the root of your Netscape
server using --with-nsapi=DIR)
> fi
> + AC_MSG_CHECKING(for NSAPI include files)
> + NSAPI_INCLUDE=""
> + if test -d $PHP_NSAPI/include ; then
> + NSAPI_INCLUDE=$PHP_NSAPI/include
> + AC_MSG_RESULT(Netscape-Enterprise/3.x style)
> + elif test -d $PHP_NSAPI/plugins/include ; then
> + NSAPI_INCLUDE=$PHP_NSAPI/plugins/include
> + AC_MSG_RESULT(iPlanet/4.x style)
> + else
> + AC_MSG_ERROR(Please check you have nsapi.h in either DIR/include or
DIR/plugins/include)
> + fi
> + AC_ADD_INCLUDE($NSAPI_INCLUDE)
> PHP_BUILD_THREAD_SAFE
> - AC_ADD_INCLUDE($PHP_NSAPI/include)
> AC_DEFINE(HAVE_NSAPI,1,[Whether you have a Netscape Server])
> PHP_SAPI=nsapi
> PHP_BUILD_SHARED
> INSTALL_IT="\$(INSTALL) -m 0755 $SAPI_SHARED $PHP_NSAPI/bin/"
> fi
> +
> +INCLUDES="$INCLUDES -I$NSAPI_INCLUDE"
>
> dnl ## Local Variables:
> dnl ## tab-width: 4
> Index: php4/sapi/nsapi/nsapi-readme.txt
> diff -u php4/sapi/nsapi/nsapi-readme.txt:1.1
php4/sapi/nsapi/nsapi-readme.txt:1.2
> --- php4/sapi/nsapi/nsapi-readme.txt:1.1 Sat May 6 16:05:29 2000
> +++ php4/sapi/nsapi/nsapi-readme.txt Tue May 30 06:20:18 2000
> @@ -1,14 +1,27 @@
> -nsapi configuration file information
> +Configuration of your Netscape or iPlanet Web Server for PHP4
> +-------------------------------------------------------------
>
> +These instructions are targetted at Netscape Enterprise Web Server
> +and SUN/Netscape Alliance iPlanet Web Server. On other web servers
> +your milage may vary.
> +
> +Firstly you may need to add some paths to the LD_LIBRARY_PATH
> +environment for netscape to find all the shared libs. This is
> +best done in the start script for your netscape server.
> +Windows users can probably skip this step. The start
> +script is located in:
> +<path-to-netscape-server>/https-servername/start
> +
> netscape config files are located in:
> -/netscape/suitespot/httpd-servername/config
> +<path-to-netscape-server>/https-servername/config
>
> add the following line to mime.types
>
> type=magnus-internal/x-httpd-php exts=php
>
>
> -Add the following to obj.conf
> +Add the following to obj.conf, shlib will vary depending on your OS, for
unix it
> +will be something like "<path-to-netscape-server>/bin/libphp4.so".
>
> #note place following two lines after mime types init!
> Init fn="load-modules"
funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
shlib="/php4/nsapiPHP4.dll"
> Index: php4/sapi/nsapi/nsapi.c
> diff -u php4/sapi/nsapi/nsapi.c:1.3 php4/sapi/nsapi/nsapi.c:1.4
> --- php4/sapi/nsapi/nsapi.c:1.3 Thu May 18 08:34:42 2000
> +++ php4/sapi/nsapi/nsapi.c Tue May 30 06:20:18 2000
> @@ -20,16 +20,30 @@
> * PHP includes
> */
> #define NSAPI 1
> +#define XP_UNIX
>
> #include "php.h"
> -
> +#include "php_variables.h"
> #include "ext/standard/info.h"
> -
> #include "php_ini.h"
> #include "php_globals.h"
> #include "SAPI.h"
> #include "main.h"
> #include "php_version.h"
> +#include "TSRM.h"
> +#include "ext/standard/php_standard.h"
> +
> +/*
> + * If neither XP_UNIX not XP_WIN32 is defined, try to guess which one.
> + * Ideally, this should be done by the configure script.
> + */
> +#if !defined(XP_UNIX) && !defined(XP_WIN32)
> + #if defined(WIN32)
> + #define XP_WIN32
> + #else
> + #define XP_UNIX
> + #endif
> +#endif
>
> /*
> * NSAPI includes
> @@ -44,7 +58,7 @@
>
> /* for unix */
> #ifndef WINAPI
> -#define WINAPI
> + #define WINAPI
> #endif
>
> /*
> @@ -59,15 +73,10 @@
> #define NSG(v) (request_context->v)
>
> /*
> - * Currently, this doesn't work with ZTS.
> + * ZTS needs to be defined for NSAPI to work
> */
> -#if defined(ZTS)
> - #define IF_ZTS(a) a
> - #define IF_NOT_ZTS(a)
> -#else
> - #define IF_ZTS(a)
> - #define IF_NOT_ZTS(a) a
> - static CRITICAL php_mutex;
> +#if !defined(ZTS)
> + #error "NSAPI module needs ZTS to be defined"
> #endif
>
> /*
> @@ -259,6 +268,31 @@
> return cookie_string;
> }
>
> +static void
> +sapi_nsapi_register_server_variables(zval *track_vars_array ELS_DC SLS_DC
PLS_DC)
> +{
> + nsapi_request_context *rc = (nsapi_request_context *)SG(server_context);
> + size_t i;
> + char *value = NULL;
> + char buf[128];
> +
> + *buf = 0;
> + for (i = 0; i < nsapi_reqpb_size; i++) {
> + if ((value = pblock_findval(nsapi_reqpb[i].nsapi_eq, rc->rq->reqpb)) ==
NULL) {
> + value = buf;
> + }
> + php_register_variable( (char *)nsapi_reqpb[i].env_var, value,
track_vars_array ELS_CC PLS_CC );
> + }
> +
> + /*
> + * Special PHP_SELF variable.
> + */
> + value = pblock_findval( "uri", rc->rq->reqpb );
> + if( value != NULL ) {
> + php_register_variable( "PHP_SELF", value, track_vars_array ELS_CC
PLS_CC );
> + }
> +}
> +
> static sapi_module_struct sapi_module = {
> "NSAPI", /* name */
>
> @@ -282,7 +316,7 @@
> sapi_nsapi_read_post, /* read POST data */
> sapi_nsapi_read_cookies, /* read Cookies */
>
> - NULL, /* register server variables */
> + sapi_nsapi_register_server_variables, /* register server variables */
> NULL, /* Log message */
>
> NULL, /* Block interruptions */
> @@ -391,7 +425,7 @@
> if (uri != NULL)
> path_translated = request_translate_uri(uri, NSG(sn));
>
> -#if 0
> +#if defined(NSAPI_DEBUG)
> log_error(LOG_INFORM, "nsapi_request_ctor", NSG(sn), NSG(rq),
> "query_string = %s, "
> "uri = %s, "
> @@ -445,7 +479,7 @@
> file_handle.filename = SG(request_info).path_translated;
> file_handle.free_filename = 0;
>
> -#if 0
> +#if defined(NSAPI_DEBUG)
> log_error(LOG_INFORM, "nsapi_module_main", NSG(sn), NSG(rq),
> "Parsing [%s]", SG(request_info).path_translated);
> #endif
> @@ -468,32 +502,20 @@
> if (sapi_module.shutdown) {
> sapi_module.shutdown(&sapi_module);
> }
> - IF_ZTS(
> - tsrm_shutdown();
> - )
> + tsrm_shutdown();
> }
>
> int WINAPI
> php4_init(pblock *pb, Session *sn, Request *rq)
> {
> - PLS_FETCH();
> + php_core_globals *core_globals;
>
> - /*
> - * TSRM has not been tested.
> - */
> - IF_ZTS(
> - tsrm_startup(1, 1, 0);
> - )
> + tsrm_startup(1, 1, 0);
> + core_globals = ts_resource(core_globals_id);
>
> sapi_startup(&sapi_module);
> sapi_module.startup(&sapi_module);
>
> - PG(expose_php) = 0;
> -
> - IF_NOT_ZTS(
> - php_mutex = crit_init();
> - )
> -
> log_error(LOG_INFORM, "php4_init", sn, rq, "Initialized PHP Module\n");
> return REQ_PROCEED;
> }
> @@ -511,28 +533,11 @@
> request_context->sn = sn;
> request_context->rq = rq;
>
> - /*
> - * Single thread the execution, if ZTS is not enabled. Need to
> - * understand the behavior of Netscape server when the client
> - * cancels a request when it is in progress. This could cause
> - * a deadlock if the thread handling the specific client is not
> - * cancelled because the php_mutex will likely remain locked
> - * until the request that was cancelled completes. The behavior
> - * is also going to be platform specific.
> - */
> - IF_NOT_ZTS(
> - crit_enter(php_mutex);
> - )
> -
> SG(server_context) = request_context;
>
> nsapi_request_ctor(NSLS_C SLS_CC);
> retval = nsapi_module_main(NSLS_C SLS_CC);
> nsapi_request_dtor(NSLS_C SLS_CC);
> -
> - IF_NOT_ZTS(
> - crit_exit(php_mutex);
> - )
>
> free(request_context);
>
>
>
>
> --
> PHP 4.0 Beta Mailing List <http://www.php.net/version4/>
> To unsubscribe, e-mail: php4beta-unsubscribe@lists.php.net
> For additional commands, e-mail: php4beta-help@lists.php.net
> To contact the list administrators, e-mail: php4beta-admin@lists.php.net
>