这些是我尝试过的,但未看到任何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/>";
}
$ phpapi的其他值可以是“ Apache 2.0 Handler”,如果使用的是php模块而不是PHP-FPM
您可以使用exec
或system
并通过ps aux | grep php-fpm
检查其运行情况。问题是在某些共享主机系统上,命令被禁用。
[我认为通常您在phpinfo中看不到是否正在运行php-fpm,因为它是fastcgi的实现。
另一种棘手的方法是从您的phpinfo文件中获取内容,并检查该值是否具有洞察力。
ob_start();
phpinfo();
$variable = ob_get_contents();
ob_get_clean();
然后您在$variable
中有了phpinfo的内容,例如,可以用strpos进行检查,以了解该部分是否可以理解您的变量。]>