diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-04 16:01:10 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-04 16:03:38 +0200 |
commit | 1d6e9da7433bddca5c591ef5b2eeef9c410543bb (patch) | |
tree | 3e5f181f6b69a15be71ff8ffa75b731ba670b598 /ext/pcre/php_pcre.c | |
parent | 1ce8c805e27c96093365aad36aa4fadc8c73824c (diff) | |
download | php-git-1d6e9da7433bddca5c591ef5b2eeef9c410543bb.tar.gz |
Improve diagnostic on PCRE JIT mmap failure
Print a more informative message that indicates that this is
likely a permission issue, and also indicate that pcre.jit=0
can be used to work around it.
Also automatically disable the JIT, so that this message is
only shown once.
See bug #78630.
Diffstat (limited to 'ext/pcre/php_pcre.c')
-rw-r--r-- | ext/pcre/php_pcre.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index a131ecd884..59217349b5 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -783,6 +783,12 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) if (!pcre2_pattern_info(re, PCRE2_INFO_JITSIZE, &jit_size) && jit_size > 0) { poptions |= PREG_JIT; } + } else if (rc == PCRE2_ERROR_NOMEMORY) { + php_error_docref(NULL, E_WARNING, + "Allocation of JIT memory failed, PCRE JIT will be disabled. " + "This is likely caused by security restrictions. " + "Either grant PHP permission to allocate executable memory, or set pcre.jit=0"); + PCRE_G(jit) = 0; } else { pcre2_get_error_message(rc, error, sizeof(error)); php_error_docref(NULL, E_WARNING, "JIT compilation failed: %s", error); |