Back to index

php5  5.3.10
Defines | Functions | Variables
php_apache.c File Reference
#include "php_apache_http.h"

Go to the source code of this file.

Defines

#define SECTION(name)   PUTS("<h2>" name "</h2>\n")

Functions

 PHP_FUNCTION (virtual)
 PHP_FUNCTION (apache_request_headers)
 PHP_FUNCTION (apache_response_headers)
 PHP_FUNCTION (apachelog)
 PHP_FUNCTION (apache_note)
 PHP_FUNCTION (apache_lookup_uri)
 PHP_FUNCTION (apache_child_terminate)
 PHP_FUNCTION (apache_setenv)
 PHP_FUNCTION (apache_get_version)
 PHP_FUNCTION (apache_get_modules)
 PHP_FUNCTION (apache_reset_timeout)
 PHP_MINFO_FUNCTION (apache)
static void php_apache_globals_ctor (php_apache_info_struct *apache_globals TSRMLS_DC)
static PHP_MINIT_FUNCTION (apache)
static PHP_MSHUTDOWN_FUNCTION (apache)

Variables

php_apache_info_struct php_apache_info
moduletop_module
module ** ap_loaded_modules
const zend_function_entry apache_functions []
zend_module_entry apache_module_entry

Define Documentation

#define SECTION (   name)    PUTS("<h2>" name "</h2>\n")

Definition at line 35 of file php_apache.c.


Function Documentation

static void php_apache_globals_ctor ( php_apache_info_struct *apache_globals  TSRMLS_DC) [static]

Definition at line 123 of file php_apache.c.

{
       apache_globals->in_request = 0;
}

Here is the caller graph for this function:

PHP_FUNCTION ( virtual  )

Definition at line 347 of file php_apache.c.

{
       char *filename;
       int filename_len;
       request_rec *rr = NULL;

       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
              return;
       }
       
       if (!(rr = sub_req_lookup_uri (filename, ((request_rec *) SG(server_context))))) {
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - URI lookup failed", filename);
              if (rr)
                     destroy_sub_req (rr);
              RETURN_FALSE;
       }

       if (rr->status != 200) {
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - error finding URI", filename);
              if (rr)
                     destroy_sub_req (rr);
              RETURN_FALSE;
       }

       php_end_ob_buffers(1 TSRMLS_CC);
       php_header(TSRMLS_C);

       if (run_sub_req(rr)) {
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to include '%s' - request execution failed", filename);
              if (rr)
                     destroy_sub_req (rr);
              RETURN_FALSE;
       }

       if (rr)
              destroy_sub_req (rr);

       RETURN_TRUE;
}

Here is the call graph for this function:

PHP_FUNCTION ( apache_request_headers  )

Definition at line 394 of file php_apache.c.

{
       array_header *env_arr;
       table_entry *tenv;
       int i;

       array_init(return_value);
       env_arr = table_elts(((request_rec *) SG(server_context))->headers_in);
       tenv = (table_entry *)env_arr->elts;
       for (i = 0; i < env_arr->nelts; ++i) {
              if (!tenv[i].key ||
                     (PG(safe_mode) &&
                      !strncasecmp(tenv[i].key, "authorization", 13))) {
                     continue;
              }
              if (add_assoc_string(return_value, tenv[i].key, (tenv[i].val==NULL) ? "" : tenv[i].val, 1)==FAILURE) {
                     RETURN_FALSE;
              }
    }
}
PHP_FUNCTION ( apache_response_headers  )

Definition at line 418 of file php_apache.c.

{
       array_header *env_arr;
       table_entry *tenv;
       int i;

       array_init(return_value);
       env_arr = table_elts(((request_rec *) SG(server_context))->headers_out);
       tenv = (table_entry *)env_arr->elts;
       for (i = 0; i < env_arr->nelts; ++i) {
              if (!tenv[i].key) continue;
              if (add_assoc_string(return_value, tenv[i].key, (tenv[i].val==NULL) ? "" : tenv[i].val, 1)==FAILURE) {
                     RETURN_FALSE;
              }
       }
}
PHP_FUNCTION ( apachelog  )
PHP_FUNCTION ( apache_note  )

Definition at line 313 of file php_apache.c.

{
       char *note_name, *note_val = NULL;
       int note_name_len, note_val_len;
       char *old_val;

       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &note_name, &note_name_len, &note_val, &note_val_len) == FAILURE) {
              return;
       }

       old_val = (char *) table_get(((request_rec *)SG(server_context))->notes, note_name);

       if (note_val) {
              table_set(((request_rec *)SG(server_context))->notes, note_name, note_val);
       }

       if (old_val) {
              RETURN_STRING(old_val, 1);
       }

       RETURN_FALSE;
}

Here is the call graph for this function:

PHP_FUNCTION ( apache_lookup_uri  )

Definition at line 461 of file php_apache.c.

{
       char *filename;
       int filename_len;
       request_rec *rr=NULL;

       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
              return;
       }

       if (!(rr = sub_req_lookup_uri(filename, ((request_rec *) SG(server_context))))) {
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "URI lookup failed '%s'", filename);
              RETURN_FALSE;
       }

       object_init(return_value);
       add_property_long(return_value,"status", rr->status);

       if (rr->the_request) {
              add_property_string(return_value,"the_request", rr->the_request, 1);
       }
       if (rr->status_line) {
              add_property_string(return_value,"status_line", (char *)rr->status_line, 1);        
       }
       if (rr->method) {
              add_property_string(return_value,"method", (char *)rr->method, 1);           
       }
       if (rr->content_type) {
              add_property_string(return_value,"content_type", (char *)rr->content_type, 1);
       }
       if (rr->handler) {
              add_property_string(return_value,"handler", (char *)rr->handler, 1);         
       }
       if (rr->uri) {
              add_property_string(return_value,"uri", rr->uri, 1);
       }
       if (rr->filename) {
              add_property_string(return_value,"filename", rr->filename, 1);
       }
       if (rr->path_info) {
              add_property_string(return_value,"path_info", rr->path_info, 1);
       }
       if (rr->args) {
              add_property_string(return_value,"args", rr->args, 1);
       }
       if (rr->boundary) {
              add_property_string(return_value,"boundary", rr->boundary, 1);
       }

       add_property_long(return_value,"no_cache", rr->no_cache);
       add_property_long(return_value,"no_local_copy", rr->no_local_copy);
       add_property_long(return_value,"allowed", rr->allowed);
       add_property_long(return_value,"sent_bodyct", rr->sent_bodyct);
       add_property_long(return_value,"bytes_sent", rr->bytes_sent);
       add_property_long(return_value,"byterange", rr->byterange);
       add_property_long(return_value,"clength", rr->clength);

#if MODULE_MAGIC_NUMBER >= 19980324
       if (rr->unparsed_uri) {
              add_property_string(return_value,"unparsed_uri", rr->unparsed_uri, 1);
       }
       if(rr->mtime) {
              add_property_long(return_value,"mtime", rr->mtime);
       }
#endif
       if(rr->request_time) {
              add_property_long(return_value,"request_time", rr->request_time);
       }

       destroy_sub_req(rr);
}

Here is the call graph for this function:

PHP_FUNCTION ( apache_child_terminate  )

Definition at line 294 of file php_apache.c.

{
#ifndef MULTITHREAD
       if (AP(terminate_child)) {
              ap_child_terminate( ((request_rec *)SG(server_context)) );
              RETURN_TRUE;
       } else { /* tell them to get lost! */
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "This function is disabled");
              RETURN_FALSE;
       }
#else
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "This function is not supported in this build");
              RETURN_FALSE;
#endif
}
PHP_FUNCTION ( apache_setenv  )

Definition at line 438 of file php_apache.c.

{
       int var_len, val_len;
       zend_bool top=0;
       char *var = NULL, *val = NULL;
       request_rec *r = (request_rec *) SG(server_context);

       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|b", &var, &var_len, &val, &val_len, &top) == FAILURE) {
              return;
       }

       while(top) {
              if(r->prev) r = r->prev;
              else break;
       }

       ap_table_setn(r->subprocess_env, ap_pstrndup(r->pool, var, var_len), ap_pstrndup(r->pool, val, val_len));
       RETURN_TRUE;
}

Here is the call graph for this function:

PHP_FUNCTION ( apache_get_version  )

Definition at line 561 of file php_apache.c.

{
       char *apv = (char *) ap_get_server_version();

       if (apv && *apv) {
              RETURN_STRING(apv, 1);
       }

       RETURN_FALSE;
}
PHP_FUNCTION ( apache_get_modules  )

Definition at line 575 of file php_apache.c.

{
       int n;
       char *p;
       
       array_init(return_value);
       
       for (n = 0; ap_loaded_modules[n]; ++n) {
              char *s = (char *) ap_loaded_modules[n]->name;
              if ((p = strchr(s, '.'))) {
                     add_next_index_stringl(return_value, s, (p - s), 1);
              } else {
                     add_next_index_string(return_value, s, 1);
              }      
       }
}

Here is the call graph for this function:

PHP_FUNCTION ( apache_reset_timeout  )

Definition at line 595 of file php_apache.c.

{
       if (PG(safe_mode)) {
              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot reset the Apache timeout in safe mode");
              RETURN_FALSE;
       }

       ap_reset_timeout((request_rec *)SG(server_context));
       RETURN_TRUE;
}
PHP_MINFO_FUNCTION ( apache  )

Definition at line 162 of file php_apache.c.

{
       char *apv = (char *) ap_get_server_version();
       module *modp = NULL;
       char output_buf[128];
#if !defined(WIN32) && !defined(WINNT)
       char name[64];
       char modulenames[1024];
       char *p;
#endif
       server_rec *serv;
       extern char server_root[MAX_STRING_LEN];
       extern uid_t user_id;
       extern char *user_name;
       extern gid_t group_id;
       extern int max_requests_per_child;

       serv = ((request_rec *) SG(server_context))->server;


       php_info_print_table_start();

#ifdef PHP_WIN32
       php_info_print_table_row(1, "Apache for Windows 95/NT");
       php_info_print_table_end();
       php_info_print_table_start();
#elif defined(NETWARE)
       php_info_print_table_row(1, "Apache for NetWare");
       php_info_print_table_end();
       php_info_print_table_start();
#else
       php_info_print_table_row(2, "APACHE_INCLUDE", PHP_APACHE_INCLUDE);
       php_info_print_table_row(2, "APACHE_TARGET", PHP_APACHE_TARGET);
#endif

       if (apv && *apv) {
              php_info_print_table_row(2, "Apache Version", apv);
       } 

#ifdef APACHE_RELEASE
       snprintf(output_buf, sizeof(output_buf), "%d", APACHE_RELEASE);
       php_info_print_table_row(2, "Apache Release", output_buf);
#endif
       snprintf(output_buf, sizeof(output_buf), "%d", MODULE_MAGIC_NUMBER);
       php_info_print_table_row(2, "Apache API Version", output_buf);
       snprintf(output_buf, sizeof(output_buf), "%s:%u", serv->server_hostname, serv->port);
       php_info_print_table_row(2, "Hostname:Port", output_buf);
#if !defined(WIN32) && !defined(WINNT)
       snprintf(output_buf, sizeof(output_buf), "%s(%d)/%d", user_name, (int)user_id, (int)group_id);
       php_info_print_table_row(2, "User/Group", output_buf);
       snprintf(output_buf, sizeof(output_buf), "Per Child: %d - Keep Alive: %s - Max Per Connection: %d", max_requests_per_child, serv->keep_alive ? "on":"off", serv->keep_alive_max);
       php_info_print_table_row(2, "Max Requests", output_buf);
#endif
       snprintf(output_buf, sizeof(output_buf), "Connection: %d - Keep-Alive: %d", serv->timeout, serv->keep_alive_timeout);
       php_info_print_table_row(2, "Timeouts", output_buf);
#if !defined(WIN32) && !defined(WINNT)
/*
       This block seems to be working on NetWare; But it seems to be showing
       all modules instead of just the loaded ones
*/
       php_info_print_table_row(2, "Server Root", server_root);

       strcpy(modulenames, "");
       for(modp = top_module; modp; modp = modp->next) {
              strlcpy(name, modp->name, sizeof(name));
              if ((p = strrchr(name, '.'))) {
                     *p='\0'; /* Cut off ugly .c extensions on module names */
              }
              strlcat(modulenames, name, sizeof(modulenames));
              if (modp->next) {
                     strlcat(modulenames, ", ", sizeof(modulenames));
              }
       }
       php_info_print_table_row(2, "Loaded Modules", modulenames);
#endif

       php_info_print_table_end();

       DISPLAY_INI_ENTRIES();

       {
              register int i;
              array_header *arr;
              table_entry *elts;
              request_rec *r;

              r = ((request_rec *) SG(server_context));
              arr = table_elts(r->subprocess_env);
              elts = (table_entry *)arr->elts;
              
              SECTION("Apache Environment");
              php_info_print_table_start();      
              php_info_print_table_header(2, "Variable", "Value");
              for (i=0; i < arr->nelts; i++) {
                     php_info_print_table_row(2, elts[i].key, elts[i].val);
              }
              php_info_print_table_end(); 
       }

       {
              array_header *env_arr;
              table_entry *env;
              int i;
              request_rec *r;
              
              r = ((request_rec *) SG(server_context));
              SECTION("HTTP Headers Information");
              php_info_print_table_start();
              php_info_print_table_colspan_header(2, "HTTP Request Headers");
              php_info_print_table_row(2, "HTTP Request", r->the_request);
              env_arr = table_elts(r->headers_in);
              env = (table_entry *)env_arr->elts;
              for (i = 0; i < env_arr->nelts; ++i) {
                     if (env[i].key && (!PG(safe_mode) || (PG(safe_mode) && strncasecmp(env[i].key, "authorization", 13)))) {
                            php_info_print_table_row(2, env[i].key, env[i].val);
                     }
              }
              php_info_print_table_colspan_header(2, "HTTP Response Headers");
              env_arr = table_elts(r->headers_out);
              env = (table_entry *)env_arr->elts;
              for(i = 0; i < env_arr->nelts; ++i) {
                     if (env[i].key) {
                            php_info_print_table_row(2, env[i].key, env[i].val);
                     }
              }
              php_info_print_table_end();
       }
}

Here is the call graph for this function:

static PHP_MINIT_FUNCTION ( apache  ) [static]

Definition at line 129 of file php_apache.c.

{
#ifdef ZTS
       ts_allocate_id(&php_apache_info_id, sizeof(php_apache_info_struct), (ts_allocate_ctor) php_apache_globals_ctor, NULL);
#else
       php_apache_globals_ctor(&php_apache_info TSRMLS_CC);
#endif
       REGISTER_INI_ENTRIES();
       return SUCCESS;
}

Here is the call graph for this function:

static PHP_MSHUTDOWN_FUNCTION ( apache  ) [static]

Definition at line 141 of file php_apache.c.


Variable Documentation

Initial value:
 {










       PHP_FALIAS(getallheaders, apache_request_headers, arginfo_apache_request_headers)
       {NULL, NULL, NULL}
}

Definition at line 98 of file php_apache.c.

zend_module_entry apache_module_entry
Initial value:

Definition at line 147 of file php_apache.c.

Definition at line 32 of file php_apache.c.