mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
sapi/cli: Extend --ini
to print INI settings changed from the builtin default (#17459)
* sapi/cli: Extend `--ini` to print INI settings changed from the builtin default This is intended to make it easier to check whether or not a given INI setting is changed from the default when building reproducers for a bugreport, without forgetting any that might be relevant to the report. As an example, running `sapi/cli/php -c /etc/php/8.3/cli/ --ini` on my Ubuntu will now output: Configuration File (php.ini) Path: /usr/local/lib Loaded Configuration File: /etc/php/8.3/cli/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) Non-standard INI settings: allow_url_include: "0" -> "" auto_append_file: (none) -> "" auto_prepend_file: (none) -> "" display_errors: "1" -> "" display_startup_errors: "1" -> "" enable_dl: "1" -> "" error_reporting: (none) -> "22527" html_errors: "1" -> "0" ignore_repeated_errors: "0" -> "" ignore_repeated_source: "0" -> "" implicit_flush: "0" -> "1" log_errors: "0" -> "1" mail.add_x_header: "0" -> "" mail.mixed_lf_and_crlf: "0" -> "" max_execution_time: "30" -> "0" memory_limit: "128M" -> "-1" request_order: (none) -> "GP" session.cookie_httponly: "0" -> "" session.gc_divisor: "100" -> "1000" session.gc_probability: "1" -> "0" session.sid_bits_per_character: "4" -> "5" session.sid_length: "32" -> "26" short_open_tag: "1" -> "" unserialize_callback_func: (none) -> "" user_dir: (none) -> "" variables_order: "EGPCS" -> "GPCS" zend.assertions: "1" -> "-1" zend.exception_ignore_args: "0" -> "1" zend.exception_string_param_max_len: "15" -> "0" * Improve phrasing Co-authored-by: Michael Voříšek <mvorisek@mvorisek.cz> * NEWS/UPGRADING --------- Co-authored-by: Michael Voříšek <mvorisek@mvorisek.cz>
This commit is contained in:
parent
107bd080a5
commit
e3798c2ab9
5 changed files with 40 additions and 0 deletions
4
NEWS
4
NEWS
|
@ -2,6 +2,10 @@ PHP NEWS
|
||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
?? ??? ????, PHP 8.5.0alpha1
|
?? ??? ????, PHP 8.5.0alpha1
|
||||||
|
|
||||||
|
- CLI:
|
||||||
|
. Extended --ini to print INI settings changed from the builtin default.
|
||||||
|
(timwolla)
|
||||||
|
|
||||||
- COM:
|
- COM:
|
||||||
. Fixed property access of PHP objects wrapped in variant. (cmb)
|
. Fixed property access of PHP objects wrapped in variant. (cmb)
|
||||||
. Fixed method calls for PHP objects wrapped in variant. (cmb)
|
. Fixed method calls for PHP objects wrapped in variant. (cmb)
|
||||||
|
|
|
@ -107,6 +107,7 @@ PHP 8.5 UPGRADE NOTES
|
||||||
- CLI:
|
- CLI:
|
||||||
. Trying to set a process title that is too long with cli_set_process_title()
|
. Trying to set a process title that is too long with cli_set_process_title()
|
||||||
will now fail instead of silently truncating the given title.
|
will now fail instead of silently truncating the given title.
|
||||||
|
. --ini will now print INI settings changed from the builtin default.
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
4. Deprecated Functionality
|
4. Deprecated Functionality
|
||||||
|
|
|
@ -225,6 +225,7 @@ ZEND_API zend_result zend_register_ini_entries_ex(const zend_ini_entry_def *ini_
|
||||||
|
|
||||||
while (ini_entry->name) {
|
while (ini_entry->name) {
|
||||||
p = pemalloc(sizeof(zend_ini_entry), 1);
|
p = pemalloc(sizeof(zend_ini_entry), 1);
|
||||||
|
p->def = ini_entry;
|
||||||
p->name = zend_string_init_interned(ini_entry->name, ini_entry->name_length, 1);
|
p->name = zend_string_init_interned(ini_entry->name, ini_entry->name_length, 1);
|
||||||
p->on_modify = ini_entry->on_modify;
|
p->on_modify = ini_entry->on_modify;
|
||||||
p->mh_arg1 = ini_entry->mh_arg1;
|
p->mh_arg1 = ini_entry->mh_arg1;
|
||||||
|
|
|
@ -60,6 +60,7 @@ struct _zend_ini_entry {
|
||||||
uint8_t orig_modifiable;
|
uint8_t orig_modifiable;
|
||||||
uint8_t modified;
|
uint8_t modified;
|
||||||
|
|
||||||
|
const zend_ini_entry_def *def;
|
||||||
};
|
};
|
||||||
|
|
||||||
BEGIN_EXTERN_C()
|
BEGIN_EXTERN_C()
|
||||||
|
|
|
@ -588,6 +588,14 @@ BOOL WINAPI php_cli_win32_ctrl_handler(DWORD sig)
|
||||||
#endif
|
#endif
|
||||||
/*}}}*/
|
/*}}}*/
|
||||||
|
|
||||||
|
static int zend_ini_entry_cmp(Bucket *a, Bucket *b)
|
||||||
|
{
|
||||||
|
zend_ini_entry *A = Z_PTR(a->val);
|
||||||
|
zend_ini_entry *B = Z_PTR(b->val);
|
||||||
|
|
||||||
|
return zend_binary_strcasecmp(ZSTR_VAL(A->name), ZSTR_LEN(A->name), ZSTR_VAL(B->name), ZSTR_LEN(B->name));
|
||||||
|
}
|
||||||
|
|
||||||
static int do_cli(int argc, char **argv) /* {{{ */
|
static int do_cli(int argc, char **argv) /* {{{ */
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
@ -1096,6 +1104,31 @@ do_repeat:
|
||||||
zend_printf("Loaded Configuration File: %s\n", php_ini_opened_path ? php_ini_opened_path : "(none)");
|
zend_printf("Loaded Configuration File: %s\n", php_ini_opened_path ? php_ini_opened_path : "(none)");
|
||||||
zend_printf("Scan for additional .ini files in: %s\n", php_ini_scanned_path ? php_ini_scanned_path : "(none)");
|
zend_printf("Scan for additional .ini files in: %s\n", php_ini_scanned_path ? php_ini_scanned_path : "(none)");
|
||||||
zend_printf("Additional .ini files parsed: %s\n", php_ini_scanned_files ? php_ini_scanned_files : "(none)");
|
zend_printf("Additional .ini files parsed: %s\n", php_ini_scanned_files ? php_ini_scanned_files : "(none)");
|
||||||
|
zend_printf("\n");
|
||||||
|
zend_printf("Non-default INI settings:\n");
|
||||||
|
zend_ini_entry *ini_entry;
|
||||||
|
HashTable *sorted = zend_array_dup(EG(ini_directives));
|
||||||
|
zend_array_sort(sorted, zend_ini_entry_cmp, 1);
|
||||||
|
ZEND_HASH_PACKED_FOREACH_PTR(sorted, ini_entry) {
|
||||||
|
if (ini_entry->value == NULL && ini_entry->def->value == NULL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (ini_entry->value != NULL && ini_entry->def->value != NULL && zend_string_equals_cstr(ini_entry->value, ini_entry->def->value, ini_entry->def->value_length)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
zend_printf(
|
||||||
|
"%s: %s%s%s -> %s%s%s\n",
|
||||||
|
ZSTR_VAL(ini_entry->name),
|
||||||
|
ini_entry->def->value ? "\"" : "",
|
||||||
|
ini_entry->def->value ? ini_entry->def->value : "(none)",
|
||||||
|
ini_entry->def->value ? "\"" : "",
|
||||||
|
ini_entry->value ? "\"" : "",
|
||||||
|
ini_entry->value ? ZSTR_VAL(ini_entry->value) : "(none)",
|
||||||
|
ini_entry->value ? "\"" : ""
|
||||||
|
);
|
||||||
|
} ZEND_HASH_FOREACH_END();
|
||||||
|
zend_array_destroy(sorted);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue