Description
According to the documentation for opcache.jit, the value disable means "Completely disabled, cannot be enabled at runtime", and the value off means "Disabled, but can be enabled at runtime".
But if you put the following values in your php.ini:
zend_extension=opcache
opcache.jit=off
opcache.jit_buffer_size=64M
...then you try to enable at runtime inside a .php file:
<?php
ini_set('opcache.jit', 'tracing');
...then you will get this:
Warning: Cannot change opcache.jit setting at run-time (JIT is disabled)
This is the same result you get if you set opcache.jit=disable.
As far as I can tell, the problem is that the code is looking for the literal string off but since that value is handled specially by PHP's ini parser, the code will never actually see a value of off. (It will never see no or false either.)
|
if (ZSTR_LEN(jit) == 0 |
|
|| zend_string_equals_literal_ci(jit, "disable")) { |
|
JIT_G(enabled) = 0; |
|
JIT_G(on) = 0; |
|
return SUCCESS; |
|
} else if (zend_string_equals_literal_ci(jit, "0") |
|
|| zend_string_equals_literal_ci(jit, "off") |
|
|| zend_string_equals_literal_ci(jit, "no") |
|
|| zend_string_equals_literal_ci(jit, "false")) { |
|
JIT_G(enabled) = 1; |
|
JIT_G(on) = 0; |
|
return SUCCESS; |
PHP Version
PHP 8.3.7
Operating System
No response
Description
According to the documentation for
opcache.jit, the valuedisablemeans "Completely disabled, cannot be enabled at runtime", and the valueoffmeans "Disabled, but can be enabled at runtime".But if you put the following values in your
php.ini:...then you try to enable at runtime inside a
.phpfile:...then you will get this:
This is the same result you get if you set
opcache.jit=disable.As far as I can tell, the problem is that the code is looking for the literal string
offbut since that value is handled specially by PHP's ini parser, the code will never actually see a value ofoff. (It will never seenoorfalseeither.)php-src/ext/opcache/jit/zend_jit.c
Lines 4806 to 4817 in 8830fbd
PHP Version
PHP 8.3.7
Operating System
No response