diff --git a/main/main.c b/main/main.c index 7d0b3ec0f2b..28a7a73ca7a 100644 --- a/main/main.c +++ b/main/main.c @@ -242,6 +242,7 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("log_errors_max_len", "1024", PHP_INI_ALL, OnUpdateInt, log_errors_max_len, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("ignore_repeated_errors", "0", PHP_INI_ALL, OnUpdateBool, ignore_repeated_errors, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("ignore_repeated_source", "0", PHP_INI_ALL, OnUpdateBool, ignore_repeated_source, php_core_globals, core_globals) + STD_PHP_INI_BOOLEAN("report_memleaks", "1", PHP_INI_SYSTEM, OnUpdateBool, report_memleaks, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("magic_quotes_gpc", "1", PHP_INI_ALL, OnUpdateBool, magic_quotes_gpc, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("magic_quotes_runtime", "0", PHP_INI_ALL, OnUpdateBool, magic_quotes_runtime, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("magic_quotes_sybase", "0", PHP_INI_ALL, OnUpdateBool, magic_quotes_sybase, php_core_globals, core_globals) @@ -609,7 +610,7 @@ static void php_message_handler_for_zend(long message, void *data) case ZMSG_MEMORY_LEAK_REPEATED: { TSRMLS_FETCH(); - if (EG(error_reporting)&E_WARNING) { + if ((EG(error_reporting)&E_WARNING) && PG(report_memleaks)) { #if ZEND_DEBUG char memory_leak_buf[512]; diff --git a/main/php_globals.h b/main/php_globals.h index b5aa41297b1..dad12d7248b 100644 --- a/main/php_globals.h +++ b/main/php_globals.h @@ -79,6 +79,7 @@ struct _php_core_globals { int log_errors_max_len; zend_bool ignore_repeated_errors; zend_bool ignore_repeated_source; + zend_bool report_memleaks; char *error_log; char *doc_root; diff --git a/php.ini-dist b/php.ini-dist index 9727b84d99b..9e2e6fcb901 100644 --- a/php.ini-dist +++ b/php.ini-dist @@ -270,6 +270,11 @@ ignore_repeated_errors = Off ; sourcelines. ignore_repeated_source = Off +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This has only effect in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +report_memleaks = On + ; Store the last error/warning message in $php_errormsg (boolean). track_errors = Off diff --git a/php.ini-recommended b/php.ini-recommended index b4fd4befb51..d695e57868e 100644 --- a/php.ini-recommended +++ b/php.ini-recommended @@ -275,6 +275,11 @@ ignore_repeated_errors = Off ; sourcelines. ignore_repeated_source = Off +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This has only effect in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +report_memleaks = On + ; Store the last error/warning message in $php_errormsg (boolean). track_errors = Off