mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
- MFH php --ri <extension>
This commit is contained in:
parent
a875e10909
commit
38201d8d12
1
NEWS
1
NEWS
@ -1,6 +1,7 @@
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? 2007, PHP 5.2.2
|
||||
- Add --ri switch to CLI which allows to check extension information. (Marcus)
|
||||
|
||||
08 Feb 2007, PHP 5.2.1
|
||||
- Added read-timeout context option "timeout" for HTTP streams. (Hannes, Ilia).
|
||||
|
@ -76,13 +76,9 @@ static int php_info_write_wrapper(const char *str, uint str_length)
|
||||
}
|
||||
|
||||
|
||||
/* {{{ _display_module_info
|
||||
*/
|
||||
static int _display_module_info(zend_module_entry *module, void *arg TSRMLS_DC)
|
||||
PHPAPI void php_info_print_module(zend_module_entry *module TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
int show_info_func = *((int *) arg);
|
||||
|
||||
if (show_info_func && module->info_func) {
|
||||
if (module->info_func) {
|
||||
if (!sapi_module.phpinfo_as_text) {
|
||||
php_printf("<h2><a name=\"module_%s\">%s</a></h2>\n", module->name, module->name);
|
||||
} else {
|
||||
@ -91,7 +87,7 @@ static int _display_module_info(zend_module_entry *module, void *arg TSRMLS_DC)
|
||||
php_info_print_table_end();
|
||||
}
|
||||
module->info_func(module TSRMLS_CC);
|
||||
} else if (!show_info_func && !module->info_func) {
|
||||
} else {
|
||||
if (!sapi_module.phpinfo_as_text) {
|
||||
php_printf("<tr>");
|
||||
php_printf("<td>");
|
||||
@ -102,7 +98,24 @@ static int _display_module_info(zend_module_entry *module, void *arg TSRMLS_DC)
|
||||
php_printf("\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static int _display_module_info_func(zend_module_entry *module TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
if (module->info_func) {
|
||||
php_info_print_module(module TSRMLS_CC);
|
||||
}
|
||||
return ZEND_HASH_APPLY_KEEP;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static int _display_module_info_def(zend_module_entry *module TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
if (!module->info_func) {
|
||||
php_info_print_module(module TSRMLS_CC);
|
||||
}
|
||||
return ZEND_HASH_APPLY_KEEP;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -662,22 +675,19 @@ PHPAPI void php_print_info(int flag TSRMLS_DC)
|
||||
}
|
||||
|
||||
if (flag & PHP_INFO_MODULES) {
|
||||
int show_info_func;
|
||||
HashTable sorted_registry;
|
||||
zend_module_entry tmp;
|
||||
|
||||
zend_hash_init(&sorted_registry, 50, NULL, NULL, 1);
|
||||
zend_hash_init(&sorted_registry, zend_hash_num_elements(&module_registry), NULL, NULL, 1);
|
||||
zend_hash_copy(&sorted_registry, &module_registry, NULL, &tmp, sizeof(zend_module_entry));
|
||||
zend_hash_sort(&sorted_registry, zend_qsort, module_name_cmp, 0 TSRMLS_CC);
|
||||
|
||||
show_info_func = 1;
|
||||
zend_hash_apply_with_argument(&sorted_registry, (apply_func_arg_t) _display_module_info, &show_info_func TSRMLS_CC);
|
||||
zend_hash_apply(&sorted_registry, (apply_func_t) _display_module_info_func TSRMLS_CC);
|
||||
|
||||
SECTION("Additional Modules");
|
||||
php_info_print_table_start();
|
||||
php_info_print_table_header(1, "Module Name");
|
||||
show_info_func = 0;
|
||||
zend_hash_apply_with_argument(&sorted_registry, (apply_func_arg_t) _display_module_info, &show_info_func TSRMLS_CC);
|
||||
zend_hash_apply(&sorted_registry, (apply_func_t) _display_module_info_def TSRMLS_CC);
|
||||
php_info_print_table_end();
|
||||
|
||||
zend_hash_destroy(&sorted_registry);
|
||||
|
@ -81,6 +81,7 @@ PHPAPI void php_info_print_table_end(void);
|
||||
PHPAPI void php_info_print_box_start(int bg);
|
||||
PHPAPI void php_info_print_box_end(void);
|
||||
PHPAPI void php_info_print_hr(void);
|
||||
PHPAPI void php_info_print_module(zend_module_entry *module TSRMLS_DC);
|
||||
PHPAPI char *php_logo_guid(void);
|
||||
PHPAPI char *php_get_uname(char mode);
|
||||
|
||||
|
@ -294,6 +294,16 @@ Shows information about class
|
||||
.IR name
|
||||
Shows information about extension
|
||||
.B name
|
||||
.TP
|
||||
.PD 0
|
||||
.B \-\-rextinfo
|
||||
.IR name
|
||||
.TP
|
||||
.PD 1
|
||||
.B \-\-ri
|
||||
.IR name
|
||||
Shows configuration for extension
|
||||
.B name
|
||||
.SH FILES
|
||||
.TP 15
|
||||
.B php\-cli.ini
|
||||
|
@ -105,16 +105,16 @@
|
||||
#define PHP_MODE_REFLECTION_FUNCTION 8
|
||||
#define PHP_MODE_REFLECTION_CLASS 9
|
||||
#define PHP_MODE_REFLECTION_EXTENSION 10
|
||||
#define PHP_MODE_REFLECTION_EXT_INFO 11
|
||||
|
||||
#define HARDCODED_INI \
|
||||
"html_errors=0\n" \
|
||||
"register_argc_argv=1\n" \
|
||||
"implicit_flush=1\n" \
|
||||
"output_buffering=0\n" \
|
||||
"max_execution_time=0\n" \
|
||||
"max_execution_time=0\n" \
|
||||
"max_input_time=-1\n"
|
||||
|
||||
|
||||
static char *php_optarg = NULL;
|
||||
static int php_optind = 1;
|
||||
#if (HAVE_LIBREADLINE || HAVE_LIBEDIT) && !defined(COMPILE_DL_READLINE)
|
||||
@ -153,6 +153,8 @@ static const opt_struct OPTIONS[] = {
|
||||
{11, 1, "rclass"},
|
||||
{12, 1, "re"},
|
||||
{12, 1, "rextension"},
|
||||
{13, 1, "ri"},
|
||||
{13, 1, "rextinfo"},
|
||||
#endif
|
||||
{'-', 0, NULL} /* end of args */
|
||||
};
|
||||
@ -450,6 +452,7 @@ static void php_cli_usage(char *argv0)
|
||||
" --rf <name> Show information about function <name>.\n"
|
||||
" --rc <name> Show information about class <name>.\n"
|
||||
" --re <name> Show information about extension <name>.\n"
|
||||
" --ri <name> Show configuration for extension <name>.\n"
|
||||
"\n"
|
||||
#endif
|
||||
, prog, prog, prog, prog, prog, prog);
|
||||
@ -623,8 +626,8 @@ int main(int argc, char *argv[])
|
||||
tsrm_startup(1, 1, 0, NULL);
|
||||
#endif
|
||||
|
||||
cli_sapi_module.php_ini_path_override = NULL;
|
||||
cli_sapi_module.ini_defaults = sapi_cli_ini_defaults;
|
||||
cli_sapi_module.php_ini_path_override = NULL;
|
||||
cli_sapi_module.phpinfo_as_text = 1;
|
||||
sapi_startup(&cli_sapi_module);
|
||||
|
||||
@ -642,13 +645,13 @@ int main(int argc, char *argv[])
|
||||
|
||||
while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0))!=-1) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
cli_sapi_module.php_ini_path_override = strdup(php_optarg);
|
||||
break;
|
||||
case 'n':
|
||||
cli_sapi_module.php_ini_ignore = 1;
|
||||
break;
|
||||
case 'd': {
|
||||
case 'c':
|
||||
cli_sapi_module.php_ini_path_override = strdup(php_optarg);
|
||||
break;
|
||||
case 'n':
|
||||
cli_sapi_module.php_ini_ignore = 1;
|
||||
break;
|
||||
case 'd': {
|
||||
/* define ini entries on command line */
|
||||
int len = strlen(php_optarg);
|
||||
char *val;
|
||||
@ -947,6 +950,10 @@ int main(int argc, char *argv[])
|
||||
behavior=PHP_MODE_REFLECTION_EXTENSION;
|
||||
reflection_what = php_optarg;
|
||||
break;
|
||||
case 13:
|
||||
behavior=PHP_MODE_REFLECTION_EXT_INFO;
|
||||
reflection_what = php_optarg;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
@ -1252,6 +1259,22 @@ int main(int argc, char *argv[])
|
||||
zval_ptr_dtor(&ref);
|
||||
zval_ptr_dtor(&arg);
|
||||
|
||||
break;
|
||||
}
|
||||
case PHP_MODE_REFLECTION_EXT_INFO:
|
||||
{
|
||||
int len = strlen(reflection_what);
|
||||
char *lcname = zend_str_tolower_dup(reflection_what, len);
|
||||
zend_module_entry *module;
|
||||
|
||||
if (zend_hash_find(&module_registry, lcname, len+1, (void**)&module) == FAILURE) {
|
||||
zend_printf("Extension '%s' not present.\n", reflection_what);
|
||||
exit_status = 1;
|
||||
} else {
|
||||
php_info_print_module(module TSRMLS_CC);
|
||||
}
|
||||
|
||||
efree(lcname);
|
||||
break;
|
||||
}
|
||||
#endif /* reflection */
|
||||
|
Loading…
Reference in New Issue
Block a user