PHP_FUNCTION(error_log)
{
zval **string, **erropt = NULL, **option = NULL, **emailhead = NULL;
- int opt_err = 0;
+ int opt_err = 0, message_len = 0;
char *message, *opt = NULL, *headers = NULL;
switch (ZEND_NUM_ARGS()) {
convert_to_string_ex(string);
message = Z_STRVAL_PP(string);
+ message_len = Z_STRLEN_PP(string);
if (erropt != NULL) {
convert_to_long_ex(erropt);
headers = Z_STRVAL_PP(emailhead);
}
- if (_php_error_log(opt_err, message, opt, headers TSRMLS_CC) == FAILURE) {
+ if (_php_error_log_ex(opt_err, message, message_len, opt, headers TSRMLS_CC) == FAILURE) {
RETURN_FALSE;
}
}
/* }}} */
-
+/* For BC (not binary safe!) */
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC)
{
- php_stream *stream = NULL;
+ return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC);
+}
- switch (opt_err) {
+PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC)
+{
+ php_stream *stream = NULL;
+ switch (opt_err)
+ {
case 1: /*send an email */
- {
- if (!php_mail(opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) {
- return FAILURE;
- }
+ if (!php_mail(opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) {
+ return FAILURE;
}
break;
case 3: /*save to a file */
stream = php_stream_open_wrapper(opt, "a", IGNORE_URL_WIN | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
- if (!stream)
+ if (!stream) {
return FAILURE;
- php_stream_write(stream, message, strlen(message));
+ }
+ php_stream_write(stream, message, message_len);
php_stream_close(stream);
break;
+
case 4: /* send to SAPI */
if (sapi_module.log_message) {
sapi_module.log_message(message);
return FAILURE;
}
break;
+
default:
php_log_err(message TSRMLS_CC);
break;
PHP_MINIT_FUNCTION(user_filters);
PHP_RSHUTDOWN_FUNCTION(user_filters);
+/* Left for BC (not binary safe!) */
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC);
+PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC);
#if SIZEOF_INT == 4
/* Most 32-bit and 64-bit systems have 32-bit ints */