授予 PHP 分配可执行内存的权限

Ant*_*ano 4 pcre php7

我在 iTop 安装期间收到此消息。如果你用谷歌搜索这个,它会出现在商业网站的内容之上。

警告:filter_var():JIT 内存分配失败,PCRE JIT 将被禁用。这可能是因为安全限制。要么授予 PHP 执行内存的权限,要么在 /var/www/html/itop/web/application/utils.php 第 338 行设置 pcre.jit=0。

“修复”包含在警告消息中,但我想更多地了解发生了什么。也许我希望 PHP 分配可执行内存。任何见解将不胜感激。

小智 8

PHP、systemd 和 selinux 的最新版本对 PHP(和 php-fpm)等系统资源的访问或动态分配施加了限制和安全块。出于生产目的,最安全的设置是在 .ini 配置中禁用它 (pcre.jit=0),但是如果您想从 selinux 中“取消阻止”它:

setsebool -P httpd_execmem on
Run Code Online (Sandbox Code Playgroud)

对于 systemd 上的 php-fpm 7.4,php-fpm 服务文件中存在一些限制,可能位于 /lib/systemd/system/php-fpm.service ,具体取决于您的操作系统。这些限制通过该文件中的注释进行记录。

相关 PHP bugtracker 在这里:https ://bugs.php.net/bug.php?id=78630