diff options
Diffstat (limited to 'ext/standard/info.c')
-rw-r--r-- | ext/standard/info.c | 259 |
1 files changed, 100 insertions, 159 deletions
diff --git a/ext/standard/info.c b/ext/standard/info.c index 5f841a0760..70b3a05457 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -40,17 +40,6 @@ #include "zend_globals.h" /* needs ELS */ -#define PHP3_CONF_STR(directive,value1,value2) \ - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); \ - PUTS(directive); \ - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\"> "); \ - if (value1) PUTS(value1); \ - else PUTS("<i>none</i>"); \ - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\"> "); \ - if (value2) PUTS(value2); \ - else PUTS("<i>none</i>"); \ - PUTS("</td></tr>\n"); - #define PHP3_CONF_LONG(directive,value1,value2) \ php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">%s</td><td bgcolor=\"" CONTENTS_COLOR "\">%ld</td><td bgcolor=\"" CONTENTS_COLOR "\">%ld</td></tr>\n",directive,value1,value2); @@ -60,17 +49,15 @@ #define CONTENTS_COLOR "#DDDDDD" #define HEADER_COLOR "#00DDDD" +#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors) + + static int _display_module_info(php3_module_entry *module) { - PUTS("<tr><th align=left bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS(module->name); - PUTS("</th><td bgcolor=\"" CONTENTS_COLOR "\">"); if (module->info_func) { - module->info_func(); - } else { - PUTS("No additional information."); + php3_printf("<hr><h2>%s</h2>\n", module->name); + module->info_func(module); } - PUTS("</td></tr>\n"); return 0; } @@ -104,105 +91,59 @@ PHPAPI void _php3_info(void) #endif - PUTS("<img src=\""); + php3_printf("<center><h1>PHP Version %s</h1></center>\n", PHP_VERSION); + + PUTS("<hr><a href=\"http://www.php.net/\"><img src=\""); if (SG(request_info).request_uri) { PUTS(SG(request_info).request_uri); } - PUTS("?=PHPE9568F34-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"56\" align=\"right\">\n"); - php3_printf("<center><h1>PHP Version %s</h1></center>\n", PHP_VERSION); - PUTS("<p>by <a href=\"mailto:rasmus@lerdorf.on.ca\">Rasmus Lerdorf</a>,\n"); - PUTS("<a href=\"mailto:andi@zend.com\">Andi Gutmans</a>,\n"); - PUTS("<a href=\"mailto:zeev@zend.com\">Zeev Suraski</a>,\n"); - PUTS("<a href=\"mailto:ssb@guardian.no\">Stig Bakken</a>,\n"); - PUTS("<a href=\"mailto:shane@caraveo.com\">Shane Caraveo</a>,\n"); - PUTS("<a href=\"mailto:jimw@php.net\">Jim Winstead</a>, and countless others.</P>\n"); - - PUTS("<P><a href=\"http://www.zend.com/\">Zend</a>:</a> "); - PUTS("<a href=\"mailto:andi@zend.com\">Andi Gutmans</a> and \n"); - PUTS("<a href=\"mailto:zeev@zend.com\">Zeev Suraski</a></p>\n"); - - PUTS("<hr>"); - php3_printf("<center>System: %s<br>Build Date: %s</center>\n", php3_uname, __DATE__); - PUTS("<center>\n"); - - SECTION("Extensions"); - PUTS("<table border=5 width=\"600\">\n"); - PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Extensions</th><th bgcolor=\"" HEADER_COLOR "\">Additional Information</th></tr>\n"); + PUTS("?=PHPE9568F34-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"56\" align=\"right\"></a>\n"); + php3_printf("System: %s<br>Build Date: %s\n<br>", php3_uname, __DATE__); + php3_printf("php3.ini path: %s<br>\n", CONFIGURATION_FILE_PATH); + + /* Zend Engine */ + PUTS("<hr><a href=\"http://www.zend.com/\"><img src=\""); + if (SG(request_info).request_uri) { + PUTS(SG(request_info).request_uri); + } + PUTS("?=PHPE9568F35-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"89\" align=\"right\"></a>\n"); + php3_printf("This program makes use of the Zend scripting language engine:<br><pre>%s</pre>", get_zend_version()); + + + PUTS("<center>"); -#ifndef MSVC5 - PUTS("<tr><th align=left bgcolor=\"" ENTRY_NAME_COLOR "\">PHP core</th>\n"); - PUTS("<td bgcolor=\"" CONTENTS_COLOR "\"><tt>CFLAGS=" PHP_CFLAGS "<br>\n"); - PUTS("HSREGEX=" PHP_HSREGEX "</td></tr>\n"); -#endif + PUTS("<hr><h1>Credits</h1>\n"); - _php3_hash_apply(&module_registry,(int (*)(void *))_display_module_info); + PUTS("<table border=5 width=\"600\">\n"); + PUTS("<tr><th colspan=\"2\" bgcolor=\"" HEADER_COLOR "\">PHP 4.0 Authors</th></tr>\n"); + php_info_print_table_header(2, "Module", "Authors"); + CREDIT_LINE("Scripting Language Engine", "Andi Gutmans, Zeev Suraski"); + CREDIT_LINE("Extension Module API", "Andi Gutmans, Zeev Suraski"); + CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken"); + CREDIT_LINE("Win32 Port", "Shane Caraveo, Zeev Suraski"); + CREDIT_LINE("Server API (SAPI) Abstraction Layer", "Andi Gutmans, Shane Caraveo, Zeev Suraski"); + CREDIT_LINE("Apache SAPI Module", "Rasmus Lerdorf, Zeev Suraski"); + CREDIT_LINE("ISAPI SAPI Module", "Andi Gutmans, Zeev Suraski"); + CREDIT_LINE("CGI SAPI Module", "Rasmus Lerdorf, Stig Bakken"); PUTS("</table>\n"); - SECTION("Configuration"); - PUTS("php3.ini file path is set to: "); - PUTS(CONFIGURATION_FILE_PATH); - PUTS("<br>\n"); - PUTS("<table border=5 width=\"600\">\n"); - PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Directive</th><th bgcolor=\"" HEADER_COLOR "\">Master Value</th><th bgcolor=\"" HEADER_COLOR "\">Local Value</th></tr>\n"); - PHP3_CONF_STR("arg_separator", INI_ORIG_STR("arg_separator"), PG(arg_separator)); - PHP3_CONF_LONG("asp_tags", INI_ORIG_INT("asp_tags"), PG(asp_tags)); - PHP3_CONF_STR("auto_prepend_file", INI_ORIG_STR("auto_prepend_file"), PG(auto_prepend_file)); - PHP3_CONF_STR("auto_append_file", INI_ORIG_STR("auto_append_file"), PG(auto_append_file)); - PHP3_CONF_STR("browscap", INI_ORIG_STR("browscap"), INI_STR("browscap")); - PHP3_CONF_LONG("define_syslog_variables", INI_ORIG_STR("define_syslog_variables"), INI_STR("define_syslog_variables")); - PHP3_CONF_LONG("display_errors", INI_ORIG_INT("display_errors"), PG(display_errors)); - PHP3_CONF_STR("doc_root", INI_ORIG_STR("doc_root"), PG(doc_root)); - PHP3_CONF_LONG("enable_dl", INI_ORIG_INT("enable_dl"), PG(enable_dl)); - PHP3_CONF_STR("error_log", INI_ORIG_STR("error_log"), PG(error_log)); - PHP3_CONF_STR("error_prepend_string", INI_ORIG_STR("error_prepend_string"), INI_STR("error_prepend_string")); - PHP3_CONF_STR("error_append_string", INI_ORIG_STR("error_append_string"), INI_STR("error_append_string")); - PHP3_CONF_LONG("error_reporting", INI_ORIG_INT("error_reporting"), EG(error_reporting)); - PHP3_CONF_STR("extension_dir", INI_ORIG_STR("extension_dir"), PG(extension_dir)); - PHP3_CONF_STR("gpc_order", INI_ORIG_STR("gpc_order"), PG(gpc_order)); - PHP3_CONF_STR("include_path", INI_ORIG_STR("include_path"), PG(include_path)); - PHP3_CONF_LONG("log_errors", INI_ORIG_INT("log_errors"), PG(log_errors)); - PHP3_CONF_LONG("max_execution_time", INI_ORIG_INT("max_execution_time"), PG(max_execution_time)); - PHP3_CONF_LONG("magic_quotes_gpc", INI_ORIG_INT("magic_quotes_gpc"), PG(magic_quotes_gpc)); - PHP3_CONF_LONG("magic_quotes_runtime", INI_ORIG_INT("magic_quotes_runtime"), PG(magic_quotes_runtime)); - PHP3_CONF_LONG("magic_quotes_sybase", INI_ORIG_INT("magic_quotes_sybase"), PG(magic_quotes_sybase)); - PHP3_CONF_LONG("memory limit", INI_ORIG_INT("memory_limit"), PG(memory_limit)); - PHP3_CONF_STR("open_basedir", INI_ORIG_STR("open_basedir"), PG(open_basedir)); - PHP3_CONF_LONG("precision", INI_ORIG_INT("precision"), EG(precision)); - PHP3_CONF_LONG("safe_mode", INI_ORIG_INT("safe_mode"), PG(safe_mode)); - PHP3_CONF_STR("safe_mode_exec_dir", INI_ORIG_STR("safe_mode_exec_dir"), PG(safe_mode_exec_dir)); - PHP3_CONF_STR("sendmail_from", INI_ORIG_STR("sendmail_from"), INI_STR("sendmail_from")); - PHP3_CONF_STR("sendmail_path", INI_ORIG_STR("sendmail_path"), INI_STR("sendmail_path")); - PHP3_CONF_LONG("short_open_tag", INI_ORIG_INT("short_open_tag"), PG(short_tags)); - PHP3_CONF_STR("SMTP", INI_ORIG_STR("SMTP"), INI_STR("SMTP")); - PHP3_CONF_LONG("sql_safe_mode", INI_ORIG_INT("sql.safe_mode"), PG(sql_safe_mode)); - PHP3_CONF_LONG("track_errors", INI_ORIG_INT("track_errors"), PG(track_errors)); - PHP3_CONF_LONG("track_vars", INI_ORIG_INT("track_vars"), PG(track_vars)); - PHP3_CONF_LONG("upload_max_filesize", INI_ORIG_INT("upload_max_filesize"), PG(upload_max_filesize)); - PHP3_CONF_STR("upload_tmp_dir", INI_ORIG_STR("upload_tmp_dir"), PG(upload_tmp_dir)); - PHP3_CONF_STR("user_dir", INI_ORIG_STR("user_dir"), PG(user_dir)); - PHP3_CONF_LONG("y2k_compliance", INI_ORIG_INT("y2k_compliance"), PG(y2k_compliance)); + + PUTS("<hr><h1>Configuraton</h1>\n"); + PUTS("<h2>PHP Core</h2>\n"); + display_ini_entries(NULL); + _php3_hash_apply(&module_registry,(int (*)(void *)) _display_module_info); + +#if 0 /* apache only directives */ PHP3_CONF_LONG("engine", INI_ORIG_INT("engine"), INI_INT("engine")); /* apache only */ PHP3_CONF_LONG("xbithack", INI_ORIG_INT("xbithack"), INI_INT("xbithack")); /* apache only */ PHP3_CONF_LONG("last_modified", INI_ORIG_INT("last_modified"), INI_INT("last_modified")); /* apache only */ /* end of apache only directives */ - - /* And now for the highlight colours */ - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_comment</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.comment"), INI_ORIG_STR("highlight.comment"), INI_STR("highlight.comment"), INI_STR("highlight.comment")); - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_default</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.default"), INI_ORIG_STR("highlight.default"), INI_STR("highlight.default"), INI_STR("highlight.default")); - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_html</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.html"), INI_ORIG_STR("highlight.html"), INI_STR("highlight.html"), INI_STR("highlight.html")); - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_string</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.string"), INI_ORIG_STR("highlight.string"), INI_STR("highlight.string"), INI_STR("highlight.string")); - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_bg</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.bg"), INI_ORIG_STR("highlight.bg"), INI_STR("highlight.bg"), INI_STR("highlight.bg")); - php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_keyword</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s> %s</font></td></tr>\n",INI_ORIG_STR("highlight.keyword"), INI_ORIG_STR("highlight.keyword"), INI_STR("highlight.keyword"), INI_STR("highlight.keyword")); - PUTS("</table>"); - -#if USE_SAPI /* call a server module specific info function */ - sapi_rqst->info(sapi_rqst); #endif SECTION("Environment"); PUTS("<table border=5 width=\"600\">\n"); - PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n"); + php_info_print_table_header(2, "Variable", "Value"); for (env=environ; env!=NULL && *env !=NULL; env++) { tmp1 = estrdup(*env); if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */ @@ -211,15 +152,7 @@ PHPAPI void _php3_info(void) } *tmp2 = 0; tmp2++; - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS(tmp1); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - if (tmp2 && *tmp2) { - PUTS(tmp2); - } else { - PUTS(" "); - } - PUTS("</td></tr>\n"); + php_info_print_table_row(2, tmp1, tmp2); efree(tmp1); } PUTS("</table>\n"); @@ -232,34 +165,18 @@ PHPAPI void _php3_info(void) SECTION("PHP Variables"); PUTS("<table border=5 width=\"600\">\n"); - PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n"); + php_info_print_table_header(2, "Variable", "Value"); if (_php3_hash_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF"), (void **) &data) != FAILURE) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS("PHP_SELF"); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS((*data)->value.str.val); - PUTS("</td></tr>\n"); + php_info_print_table_row(2, "PHP_SELF", (*data)->value.str.val); } if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE"), (void **) &data) != FAILURE) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS("PHP_AUTH_TYPE"); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS((*data)->value.str.val); - PUTS("</td></tr>\n"); + php_info_print_table_row(2, "PHP_AUTH_TYPE", (*data)->value.str.val); } if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER"), (void **) &data) != FAILURE) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS("PHP_AUTH_USER"); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS((*data)->value.str.val); - PUTS("</td></tr>\n"); + php_info_print_table_row(2, "PHP_AUTH_USER", (*data)->value.str.val); } if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW"), (void **) &data) != FAILURE) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS("PHP_AUTH_PW"); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS((*data)->value.str.val); - PUTS("</td></tr>\n"); + php_info_print_table_row(2, "PHP_AUTH_PW", (*data)->value.str.val); } if (_php3_hash_find(&EG(symbol_table), "HTTP_GET_VARS", sizeof("HTTP_GET_VARS"), (void **) &data) != FAILURE) { _php3_hash_internal_pointer_reset((*data)->value.ht); @@ -338,13 +255,9 @@ PHPAPI void _php3_info(void) SECTION("Apache Environment"); PUTS("<table border=5 width=\"600\">\n"); - PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n"); + php_info_print_table_header(2, "Variable", "Value"); for (i=0; i < arr->nelts; i++) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS(elts[i].key); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS(elts[i].val); - PUTS(" </td></tr>\n"); + php_info_print_table_row(2, elts[i].key, elts[i].val); } PUTS("</table>\n"); } @@ -362,18 +275,12 @@ PHPAPI void _php3_info(void) SECTION("HTTP Headers Information"); PUTS("<table border=5 width=\"600\">\n"); PUTS(" <tr><th colspan=2 bgcolor=\"" HEADER_COLOR "\">HTTP Request Headers</th></tr>\n"); - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">HTTP Request</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS(r->the_request); - PUTS(" </td></tr>\n"); + 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) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS(env[i].key); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS(env[i].val); - PUTS(" </td></tr>\n"); + php_info_print_table_row(2, env[i].key, env[i].val); } } PUTS(" <tr><th colspan=2 bgcolor=\"" HEADER_COLOR "\">HTTP Response Headers</th></tr>\n"); @@ -381,11 +288,7 @@ PHPAPI void _php3_info(void) env = (table_entry *)env_arr->elts; for(i = 0; i < env_arr->nelts; ++i) { if (env[i].key) { - PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); - PUTS(env[i].key); - PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">"); - PUTS(env[i].val); - PUTS(" </td></tr>\n"); + php_info_print_table_row(2, env[i].key, env[i].val); } } PUTS("</table>\n\n"); @@ -394,15 +297,6 @@ PHPAPI void _php3_info(void) PUTS("</center>"); - PUTS("<hr>\n"); - PUTS("<table width=\"100%%\"><tr>\n"); - php3_printf("<td><h2>Zend</h2>This program makes use of the Zend scripting language engine:<br><pre>%s</pre></td>", get_zend_version()); - PUTS("<td width=\"100\"><a href=\"http://www.zend.com/\"><img src=\""); - if (SG(request_info).request_uri) { - PUTS(SG(request_info).request_uri); - } - PUTS("?=PHPE9568F35-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"89\"></a></td>\n"); - PUTS("</tr></table>\n"); SECTION("PHP License"); PUTS("<PRE>This program is free software; you can redistribute it and/or modify\n"); @@ -426,6 +320,53 @@ PHPAPI void _php3_info(void) } + +PHPAPI void php_info_print_table_header(int num_cols, ...) +{ + int i; + va_list row_elements; + char *row_element; + + va_start(row_elements, num_cols); + + php3_printf("<tr>"); + for (i=0; i<num_cols; i++) { + row_element = va_arg(row_elements, char *); + if (!row_element || !*row_element) { + row_element = " "; + } + php3_printf("<th bgcolor=\"" HEADER_COLOR "\" valign=\"top\">%s</th>", row_element); + } + php3_printf("</tr>\n"); + + va_end(row_elements); +} + + +PHPAPI void php_info_print_table_row(int num_cols, ...) +{ + int i; + va_list row_elements; + char *color = ENTRY_NAME_COLOR; + char *row_element; + + va_start(row_elements, num_cols); + + php3_printf("<tr>"); + for (i=0; i<num_cols; i++) { + row_element = va_arg(row_elements, char *); + if (!row_element || !*row_element) { + row_element = " "; + } + php3_printf("<td bgcolor=\"%s\" valign=\"top\">%s</td>", color, row_element); + color = CONTENTS_COLOR; + } + php3_printf("</tr>\n"); + + va_end(row_elements); +} + + /* {{{ proto void phpinfo(void) Output a page of useful information about PHP and the current request */ void php3_info(INTERNAL_FUNCTION_PARAMETERS) |