summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSVN Migration <svn@php.net>2001-03-20 21:59:50 +0000
committerSVN Migration <svn@php.net>2001-03-20 21:59:50 +0000
commitaec3e9a8a49b2e9fef65f67071e649e78dd8c466 (patch)
tree2db8ada4598f3cae1733b3d76e815971cb3d6de2
parentad8426b7d344f18f227c6ebe6e5303019c464dcc (diff)
downloadphp-git-php-4.0.5RC2.tar.gz
This commit was manufactured by cvs2svn to create tag 'php_4_0_5RC2'.php-4.0.5RC2
-rw-r--r--sapi/fastcgi/CREDITS4
-rw-r--r--sapi/fastcgi/Makefile.in5
-rw-r--r--sapi/fastcgi/README.FastCGI17
-rw-r--r--sapi/fastcgi/config.m422
-rw-r--r--sapi/fastcgi/fastcgi.c457
-rw-r--r--sapi/fastcgi/php.sym0
-rw-r--r--sapi/fastcgi/php_fastcgi.h28
7 files changed, 0 insertions, 533 deletions
diff --git a/sapi/fastcgi/CREDITS b/sapi/fastcgi/CREDITS
deleted file mode 100644
index eb9cece428..0000000000
--- a/sapi/fastcgi/CREDITS
+++ /dev/null
@@ -1,4 +0,0 @@
-fastcgi
-Ben Mansell
-Stephen Landamore
-Daniel Silverstone
diff --git a/sapi/fastcgi/Makefile.in b/sapi/fastcgi/Makefile.in
deleted file mode 100644
index 0bea9c31b1..0000000000
--- a/sapi/fastcgi/Makefile.in
+++ /dev/null
@@ -1,5 +0,0 @@
-
-LTLIBRARY_NAME = libsapi.la
-LTLIBRARY_SOURCES = fastcgi.c
-
-include $(top_srcdir)/build/ltlib.mk
diff --git a/sapi/fastcgi/README.FastCGI b/sapi/fastcgi/README.FastCGI
deleted file mode 100644
index 65dbc44ea0..0000000000
--- a/sapi/fastcgi/README.FastCGI
+++ /dev/null
@@ -1,17 +0,0 @@
-FastCGI module
---------------
-
-This module requires the FastCGI development kit, available from
-http://www.fastcgi.com/
-
-Before building PHP, please enter the dev kit, and run:
-
-./configure
-make
-make export
-
-This will compile the library code required for the FastCGI module. All
-that is then required is to configure PHP with the '--with-fastcgi' option.
-After making the code, you will end up with a binary file called 'php'.
-Installation of this file will depend on the web server being used, please
-see their documentation for details.
diff --git a/sapi/fastcgi/config.m4 b/sapi/fastcgi/config.m4
deleted file mode 100644
index 7e9c39e0b5..0000000000
--- a/sapi/fastcgi/config.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-AC_MSG_CHECKING(for FastCGI support)
-AC_ARG_WITH(fastcgi,
-[ --with-fastcgi=SRCDIR Build PHP as FastCGI application],[
- if test "$withval" = "yes"; then
- FASTCGIPATH=/usr/local
- else
- FASTCGIPATH=$withval
- fi
- test -f "$FASTCGIPATH/lib/libfcgi.a" || AC_MSG_ERROR(Unable to find libfcgi.a in $FASTCGIPATH/lib)
- test -f "$FASTCGIPATH/include/fastcgi.h" || AC_MSG_ERROR(Unable to find fastcgi.h in $FASTCGIPATH/include)
- PHP_SAPI=fastcgi
- PHP_LIBS=$FASTCGIPATH/lib/libfcgi.a
- AC_ADD_INCLUDE($FASTCGIPATH/include)
- EXT_PROGRAM_LDADD="$EXT_PROGRAM_LDADD $FASTCGIPATH/lib/libfcgi.a"
- INSTALL_IT="\$(INSTALL) -m 0755 $SAPI_PROGRAM \$(bindir)/$SAPI_FASTCGI"
- RESULT="yes"
- PHP_SUBST(FASTCGI_LIBADD)
- PHP_SUBST(EXT_PROGRAM_LDADD)
-],[
- RESULT="no"
-])
-AC_MSG_RESULT($RESULT)
diff --git a/sapi/fastcgi/fastcgi.c b/sapi/fastcgi/fastcgi.c
deleted file mode 100644
index 8db43ae792..0000000000
--- a/sapi/fastcgi/fastcgi.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP version 4.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2001 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.02 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
- | http://www.php.net/license/2_02.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Ben Mansell <php@slimyhorror.com> |
- +----------------------------------------------------------------------+
-*/
-
-/* Debugging */
-/* #define DEBUG_FASTCGI 1 */
-
-/* Two configurables for the FastCGI runner.
- *
- * PHP_FCGI_CHILDREN - if set, the FastCGI will pre-fork this many processes
- * which will accept requests.
- *
- * PHP_FCGI_MAX_REQUESTS - if set, the runner will kill itself after handling
- * the given number of requests. This is to curb any
- * memory leaks in PHP.
- */
-
-
-/* The following code is based mainly on the thttpd sapi and the original
- * CGI code, no doubt with many new and interesting bugs created... :)
- */
-
-#include "php.h"
-#include "SAPI.h"
-#include "php_main.h"
-#include "php_fastcgi.h"
-#include "php_variables.h"
-
-#include "fcgi_config.h"
-#include "fcgiapp.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-
-
-#define TLS_D
-#define TLS_DC
-#define TLS_C
-#define TLS_CC
-#define TLS_FETCH()
-
-
-FCGX_Stream *in, *out, *err;
-FCGX_ParamArray envp;
-char *path_info = NULL;
-
-/* Our original environment from when the FastCGI first started */
-char **orig_env;
-
-/* The environment given by the FastCGI */
-char **cgi_env;
-
-/* The manufactured environment, from merging the base environ with
- * the parameters set by the per-connection environment
- */
-char **merge_env;
-
-
-static int sapi_fastcgi_ub_write(const char *str, uint str_length)
-{
- uint sent = FCGX_PutStr( str, str_length, out );
- return sent;
-}
-
-
-static void sapi_fastcgi_flush( void *server_context )
-{
- if( FCGX_FFlush( out ) == -1 ) {
- php_handle_aborted_connection();
- }
-}
-
-
-static int sapi_fastcgi_send_headers(sapi_headers_struct *sapi_headers SLS_DC)
-{
- char buf[1024];
- int n = 0;
- zend_llist_position pos;
- sapi_header_struct *h;
-
- switch( sapi_headers->http_response_code ) {
- case 200:
- /* Default, assumed by FastCGI */
- break;
- case 302:
- FCGX_PutS( "Status: 302 Moved Temporarily\r\n", out );
- break;
- case 401:
- FCGX_PutS( "Status: 401 Authorization Required\r\n", out );
- break;
- default:
- FCGX_FPrintF( out, "Status: %d Undescribed\r\\n",
- sapi_headers->http_response_code );
- }
-
- h = zend_llist_get_first_ex(&sapi_headers->headers, &pos);
- while (h) {
- /* TODO: Buffer headers together into one big Put? */
-#ifdef DEBUG_FASTCGI
- fprintf( stderr, "Printing header %s\n", h->header );
-#endif
- FCGX_PutStr( h->header, h->header_len, out );
- FCGX_PutStr( "\r\n", 2, out );
- h = zend_llist_get_next_ex(&sapi_headers->headers, &pos);
- }
- FCGX_PutStr( "\r\n", 2, out );
-
- return SAPI_HEADER_SENT_SUCCESSFULLY;
-}
-
-static int sapi_fastcgi_read_post(char *buffer, uint count_bytes SLS_DC)
-{
- size_t read_bytes = 0, tmp;
- int c;
- char *pos = buffer;
- TLS_FETCH();
-
- while( count_bytes ) {
- c = FCGX_GetStr( pos, count_bytes, in );
- read_bytes += c;
- count_bytes -= c;
- pos += c;
- if( !c ) break;
- }
- return read_bytes;
-}
-
-static char *sapi_fastcgi_read_cookies(SLS_D)
-{
- return getenv( "HTTP_COOKIE" );
-}
-
-
-static void sapi_fastcgi_register_variables(zval *track_vars_array ELS_DC SLS_DC PLS_DC)
-{
- char *self = getenv("REQUEST_URI");
- char *ptr = strchr( self, '?' );
-
- /* In CGI mode, we consider the environment to be a part of the server
- * variables
- */
- php_import_environment_variables(track_vars_array ELS_CC PLS_CC);
-
- /* strip query string off this */
- if ( ptr ) *ptr = 0;
- php_register_variable( "PHP_SELF", getenv("REQUEST_URI"), track_vars_array ELS_CC PLS_CC);
- if ( ptr ) *ptr = '?';
-}
-
-
-static sapi_module_struct fastcgi_sapi_module = {
- "fastcgi",
- "FastCGI",
-
- php_module_startup,
- php_module_shutdown_wrapper,
-
- NULL, /* activate */
- NULL, /* deactivate */
-
- sapi_fastcgi_ub_write,
- sapi_fastcgi_flush,
- NULL, /* get uid */
- NULL, /* getenv */
-
- php_error,
-
- NULL,
- sapi_fastcgi_send_headers,
- NULL,
- sapi_fastcgi_read_post,
- sapi_fastcgi_read_cookies,
-
- sapi_fastcgi_register_variables,
- NULL, /* Log message */
-
- NULL, /* Block interruptions */
- NULL, /* Unblock interruptions */
-
- STANDARD_SAPI_MODULE_PROPERTIES
-};
-
-static void fastcgi_module_main(TLS_D SLS_DC)
-{
- zend_file_handle file_handle;
- CLS_FETCH();
- ELS_FETCH();
- PLS_FETCH();
-
- file_handle.type = ZEND_HANDLE_FILENAME;
- file_handle.filename = SG(request_info).path_translated;
- file_handle.free_filename = 0;
- file_handle.opened_path = NULL;
-
- if (php_request_startup(CLS_C ELS_CC PLS_CC SLS_CC) == SUCCESS) {
- php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
- }
- php_request_shutdown(NULL);
-}
-
-
-static void init_request_info( SLS_D )
-{
- char *content_length = getenv("CONTENT_LENGTH");
- const char *auth;
- struct stat st;
- char *pi = getenv( "PATH_INFO" );
- char *pt = getenv( "PATH_TRANSLATED" );
- path_info = strdup( pi );
-
- SG(request_info).request_method = getenv("REQUEST_METHOD");
- SG(request_info).query_string = getenv("QUERY_STRING");
- SG(request_info).request_uri = path_info;
- SG(request_info).content_type = getenv("CONTENT_TYPE");
- SG(request_info).content_length = (content_length?atoi(content_length):0);
- SG(sapi_headers).http_response_code = 200;
-
- SG(request_info).path_translated = pt;
- /*
- * if the file doesn't exist, try to extract PATH_INFO out
- * of it by stat'ing back through the '/'
- */
- if ( stat( pt, &st ) == -1 ) {
- int len = strlen(pt);
- char *ptr;
- while( ptr = strrchr(pt,'/') ) {
- *ptr = 0;
- if ( stat(pt,&st) == 0 && S_ISREG(st.st_mode) ) {
- /*
- * okay, we found the base script!
- * work out how many chars we had to strip off;
- * then we can modify PATH_INFO
- * accordingly
- */
- int slen = len - strlen(pt);
- if ( pi ) {
- int pilen = strlen( pi );
- strcpy( pi, pi + pilen - slen );
- }
- break;
- }
- }
- /*
- * if we stripped out all the '/' and still didn't find
- * a valid path... we will fail, badly. of course we would
- * have failed anyway... is there a nice way to error?
- */
- } else {
- /* the first stat succeeded... */
- if ( pi ) *pi = 0;
- }
-
- /* The CGI RFC allows servers to pass on unvalidated Authorization data */
- auth = getenv("HTTP_AUTHORIZATION");
-#ifdef DEBUG_FASTCGI
- fprintf( stderr, "Authorization: %s\n", auth );
-#endif
- php_handle_auth_data(auth SLS_CC);
-
-
-}
-
-
-void fastcgi_php_init(void)
-{
- sapi_startup(&fastcgi_sapi_module);
- fastcgi_sapi_module.startup(&fastcgi_sapi_module);
- SG(server_context) = (void *) 1;
-}
-
-void fastcgi_php_shutdown(void)
-{
- if (SG(server_context) != NULL) {
- fastcgi_sapi_module.shutdown(&fastcgi_sapi_module);
- sapi_shutdown();
- }
-}
-
-
-int main(int argc, char *argv[])
-{
- int exit_status = SUCCESS;
- int c, i, len;
- zend_file_handle file_handle;
- char *s;
- char *argv0=NULL;
- char *script_file=NULL;
- zend_llist global_vars;
- int children = 8;
- int max_requests = 500;
- int requests = 0;
- int status;
- int env_size;
-
-#ifdef FASTCGI_DEBUG
- fprintf( stderr, "Initialising now!\n" );
-#endif
-
- /* Calculate environment size */
- env_size = 0;
- while( environ[ env_size ] ) { env_size++; }
- /* Also include the final NULL pointer */
- env_size++;
-
- /* Allocate for our environment */
- orig_env = malloc( env_size * sizeof( char *));
- if( !orig_env ) {
- perror( "Can't malloc environment" );
- exit( 1 );
- }
- memcpy( orig_env, environ, env_size * sizeof( char *));
-
-#ifdef HAVE_SIGNAL_H
-#if defined(SIGPIPE) && defined(SIG_IGN)
- signal(SIGPIPE,SIG_IGN); /* ignore SIGPIPE in standalone mode so
- that sockets created via fsockopen()
- don't kill PHP if the remote site
- closes it. in apache|apxs mode apache
- does that for us! thies@thieso.net
- 20000419 */
-#endif
-#endif
-
- sapi_startup(&fastcgi_sapi_module);
-
- if (php_module_startup(&fastcgi_sapi_module)==FAILURE) {
- return FAILURE;
- }
-
- /* How many times to run PHP scripts before dying */
- if( getenv( "PHP_FCGI_MAX_REQUESTS" )) {
- max_requests = atoi( getenv( "PHP_FCGI_MAX_REQUESTS" ));
- if( !max_requests ) {
- fprintf( stderr,
- "PHP_FCGI_MAX_REQUESTS is not valid\n" );
- exit( 1 );
- }
- }
-
- /* Pre-fork, if required */
- if( getenv( "PHP_FCGI_CHILDREN" )) {
- children = atoi( getenv( "PHP_FCGI_CHILDREN" ));
- if( !children ) {
- fprintf( stderr,
- "PHP_FCGI_CHILDREN is not valid\n" );
- exit( 1 );
- }
- }
-
- if( children ) {
- int parent = 1;
- int running = 0;
- while( parent ) {
- do {
-#ifdef FASTCGI_DEBUG
- fprintf( stderr, "Forking, %d running\n",
- running );
-#endif
- switch( fork() ) {
- case 0:
- /* One of the children.
- * Make sure we don't go round the
- * fork loop any more
- */
- parent = 0;
- break;
- case -1:
- perror( "php (pre-forking)" );
- exit( 1 );
- break;
- default:
- /* Fine */
- running++;
- break;
- }
- } while( parent && ( running < children ));
-
- if( parent ) {
- wait( &status );
- running--;
- }
- }
- }
-
- /* Main FastCGI loop */
-#ifdef FASTCGI_DEBUG
- fprintf( stderr, "Going into accept loop\n" );
-#endif
-
- while( FCGX_Accept( &in, &out, &err, &cgi_env ) >= 0 ) {
-
-#ifdef FASTCGI_DEBUG
- fprintf( stderr, "Got accept\n" );
-#endif
-
- /* Allocate for our environment */
- merge_env = malloc( env_size * sizeof( char *));
- if( !merge_env ) {
- perror( "Can't malloc environment" );
- exit( 1 );
- }
- memcpy( merge_env, orig_env, env_size * sizeof( char *));
-
- /* Use the new environment */
- environ = merge_env;
-
- /* Populate our environment with the CGI's */
- for( i = 0; cgi_env[ i ]; i++ ) {
- putenv( cgi_env[ i ] );
- }
-
- init_request_info( TLS_C SLS_CC );
- SG(server_context) = (void *) 1; /* avoid server_context==NULL checks */
- CG(extended_info) = 0;
- SG(request_info).argv0 = argv0;
- zend_llist_init(&global_vars, sizeof(char *), NULL, 0);
-
- fastcgi_module_main( TLS_C SLS_CC );
- if( path_info ) {
- free( path_info );
- path_info = NULL;
- }
-
- /* TODO: We should free our environment here, but
- * some platforms are unhappy if they've altered our
- * existing environment and we then free() the new
- * environ pointer
- */
-
- requests++;
- if( max_requests && ( requests == max_requests )) {
- FCGX_Finish();
- break;
- }
- }
-
-#ifdef FASTCGI_DEBUG
- fprintf( stderr, "Exiting...\n" );
-#endif
- return 0;
-}
diff --git a/sapi/fastcgi/php.sym b/sapi/fastcgi/php.sym
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sapi/fastcgi/php.sym
+++ /dev/null
diff --git a/sapi/fastcgi/php_fastcgi.h b/sapi/fastcgi/php_fastcgi.h
deleted file mode 100644
index 9031d7bd11..0000000000
--- a/sapi/fastcgi/php_fastcgi.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP version 4.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2001 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.02 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
- | http://www.php.net/license/2_02.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Sascha Schumann <sascha@schumann.cx> |
- +----------------------------------------------------------------------+
-*/
-
-#ifndef PHP_FASTCGI_H
-#define PHP_FASTCGI_H
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-void fastcgi_php_shutdown(void);
-void fastcgi_php_init(void);
-
-#endif