如何检查PHP-FPM是否已安装并在PHP中处于活动状态


How to check if PHP-FPM is installed and active in PHP

这些是我尝试过的,但没有看到任何PHP-FPM值。

print_r(ini_get_all());
print_r(get_defined_constants());
echo php_sapi_name();
print_r(get_loaded_extensions());

在phpinfo中,我可以看到php-fpm正在安装,并且该值是活动的。

根据@RenéHöhle的回答,我的方法是:

ob_start();
phpinfo();
$phpinfo = ob_get_contents();
ob_get_clean();
preg_match('/<tr><td class="e">Server API <'/td><td class="v">(.+)<'/td><'/tr>/', $phpinfo, $phpapi);
if (trim($phpapi[1]) == "FPM/FastCGI" && version_compare(PHP_VERSION, '7.3.0') < 0) {
    echo "Warning, FPM is activated and PHP version is < 7.3.0. Function apache_request_headers is probably not available<br/>";
}

如果使用php模块而不是php-FPM ,$phpapi的其他值可以是"Apache 2.0处理程序"

您可以使用execsystem,并检查ps aux | grep php-fpm是否正在运行。问题是,在某些共享主机系统上,命令被禁用。

我认为,通常情况下,您在phpinfo中看不到是否运行php-fpm,因为它是一个fastcgi实现。

另一种棘手的方法是从phpinfo文件中获取内容,并检查值是否为insight。

ob_start();
phpinfo();
$variable = ob_get_contents();
ob_get_clean();

然后,您在$variable中有了phpinfo的内容,您可以使用strpos进行检查,例如,该部分是否了解您的变量。