【问题标题】:Can modules be loaded and not show up on a phpinfo() page?可以加载模块而不显示在 phpinfo() 页面上吗?
【发布时间】:2017-04-21 16:53:43
【问题描述】:

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

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

PHP 版本为 5.6.30

【问题讨论】:

  • 你知道apache和php有不同的模块吗? apache 模块当然不会显示在 php 中
  • @Lashane 你是说 mod_headers、mod_deflate 和 mod_expires 不是 Apache 模块吗?
  • 这些是 apache 的,你不会在 phpinfo 模块输出中看到它们
  • 它们出现在测试中的 phpinfo 输出中,但没有出现在实时站点上。
  • 根据php.net/manual/en/function.apache-get-modules.phpphp 5.0+会显示出来,所以不会加载

标签: php linux .htaccess loadmodule


【解决方案1】:

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

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

如果您使用的是 PHP FastCGI 进程管理器(一些 Linux 发行版在安装 Web 服务器和 PHP 时默认启用它),您不仅需要重新启动/重新加载 Apache,而且 还需要重新加载 FPM (php-fpm):

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

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

【讨论】:

  • 听起来不错,但没有为我解决问题
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多