mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
- Fixed bug #61045 (fpm don't send error log to fastcgi clients)
This commit is contained in:
parent
c973fef48d
commit
faca4e08b4
3
NEWS
3
NEWS
@ -4,6 +4,9 @@ PHP NEWS
|
||||
|
||||
?? ??? 2012, PHP 5.3.14
|
||||
|
||||
- FPM
|
||||
. Fixed bug #61045 (fpm don't send error log to fastcgi clients). (fat)
|
||||
|
||||
- XML Writer:
|
||||
. Fixed bug #62064 (memory leak in the XML Writer module).
|
||||
(jean-pierre dot lozi at lip6 dot fr)
|
||||
|
@ -655,14 +655,38 @@ static void sapi_cgi_register_variables(zval *track_vars_array TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
|
||||
static void sapi_cgi_log_message(char *message)
|
||||
/* {{{ sapi_cgi_log_fastcgi
|
||||
*
|
||||
* Ignore level, we want to send all messages through fastcgi
|
||||
*/
|
||||
void sapi_cgi_log_fastcgi(int level, char *message, size_t len)
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (CGIG(fcgi_logging)) {
|
||||
zlog(ZLOG_NOTICE, "PHP message: %s", message);
|
||||
fcgi_request *request = (fcgi_request*) SG(server_context);
|
||||
|
||||
/* ensure we want:
|
||||
* - to log (fastcgi.logging in php.ini)
|
||||
* - we are currently dealing with a request
|
||||
* - the message is not empty
|
||||
*/
|
||||
if (CGIG(fcgi_logging) && request && message && len > 0) {
|
||||
char *buf = malloc(len + 2);
|
||||
memcpy(buf, message, len);
|
||||
memcpy(buf + len, "\n", sizeof("\n"));
|
||||
fcgi_write(request, FCGI_STDERR, buf, len+1);
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ sapi_cgi_log_message
|
||||
*/
|
||||
static void sapi_cgi_log_message(char *message)
|
||||
{
|
||||
zlog(ZLOG_NOTICE, "PHP message: %s", message);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ php_cgi_ini_activate_user_config
|
||||
*/
|
||||
@ -1778,6 +1802,9 @@ consult the installation file that came with this distribution, or visit \n\
|
||||
fcgi_fd = fpm_run(&max_requests);
|
||||
parent = 0;
|
||||
|
||||
/* onced forked tell zlog to also send messages through sapi_cgi_log_fastcgi() */
|
||||
zlog_set_external_logger(sapi_cgi_log_fastcgi);
|
||||
|
||||
/* make php call us to get _ENV vars */
|
||||
php_php_import_environment_variables = php_import_environment_variables;
|
||||
php_import_environment_variables = cgi_php_import_environment_variables;
|
||||
|
@ -22,6 +22,7 @@
|
||||
static int zlog_fd = -1;
|
||||
static int zlog_level = ZLOG_NOTICE;
|
||||
static int launched = 0;
|
||||
static void (*external_logger)(int, char *, size_t) = NULL;
|
||||
|
||||
static const char *level_names[] = {
|
||||
[ZLOG_DEBUG] = "DEBUG",
|
||||
@ -41,6 +42,12 @@ const int syslog_priorities[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
void zlog_set_external_logger(void (*logger)(int, char *, size_t)) /* {{{ */
|
||||
{
|
||||
external_logger = logger;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
const char *zlog_get_level_name(int log_level) /* {{{ */
|
||||
{
|
||||
if (log_level < 0) {
|
||||
@ -101,6 +108,19 @@ void zlog_ex(const char *function, int line, int flags, const char *fmt, ...) /*
|
||||
int truncated = 0;
|
||||
int saved_errno;
|
||||
|
||||
if (external_logger) {
|
||||
va_start(args, fmt);
|
||||
len = vsnprintf(buf, buf_size, fmt, args);
|
||||
va_end(args);
|
||||
if (len >= buf_size) {
|
||||
memcpy(buf + buf_size - sizeof("..."), "...", sizeof("...") - 1);
|
||||
len = buf_size - 1;
|
||||
}
|
||||
external_logger(flags & ZLOG_LEVEL_MASK, buf, len);
|
||||
len = 0;
|
||||
memset(buf, '\0', buf_size);
|
||||
}
|
||||
|
||||
if ((flags & ZLOG_LEVEL_MASK) < zlog_level) {
|
||||
return;
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
struct timeval;
|
||||
|
||||
void zlog_set_external_logger(void (*logger)(int, char *, size_t));
|
||||
int zlog_set_fd(int new_fd);
|
||||
int zlog_set_level(int new_value);
|
||||
const char *zlog_get_level_name(int log_level);
|
||||
|
Loading…
Reference in New Issue
Block a user