可以加载模块而不显示在 phpinfo() 页面上吗?

Can modules be loaded and not show up on a phpinfo() page?

我们的测试环境中有一个 phpinfo() 页面显示标题 Loaded Modules 并显示所有已加载的模块。实际站点上的重复 phpinfo() 页面没有 Loaded Modules 部分,并且一些处理 GZIP 压缩之类的模块看起来好像没有加载。 Linux 家伙说有问题的模块(mod_headers、mod_deflate 和 mod_expires)在 LoadModule 语句中。

我希望为此站点启用 GZIP 压缩。通过 .htaccess,我已经成功地打开了与其他站点和其他服务器的 GZIP 压缩,但在此 site/server 上没有。因为 phpinfo() 上没有显示已加载的模块,我想确定是否可以加载模块而不显示在 phpinfo() 页面上?

PHP 版本为 5.6.30

是,如果 PHP 在 Apache 上是 运行 作为 CGI 或 FastCGI。如果 Apache 上的 PHP 是 运行 作为一个模块,答案是否定的。感谢这个post:Alternatives to apache_get_modules() to get list of loaded apache modules

对于正在寻找另一个答案的人(就像我一样):

如果您看到“php -m”加载了模块,并且您的 phpinfo() 页面显示正确的 php.ini 文件正在加载,但是新模块仍然没有显示在列表中,这可能会有用:

如果您正在使用 PHP FastCGI 进程管理器(某些 Linux 发行版在安装 Web 服务器和 PHP 时会默认启用它),您将需要 restart/reload 不仅是 Apache,还有 FPM (php-fpm):

<em>sudo systemctl reload httpd</em>
<em>sudo systemctl reload php-fpm</em>

在此之后,您创建的 phpinfo() 页面将正确显示添加的新模块(FPM 正在为加载新模块的页面提供服务)