1

我已经升级到 Centos 8,发现自己不得不应对 Apache 2.4 的变化。我已经开始让它工作了,但是我有一个令人费解的错误,一个简单的设置是.htaccess

#   .htaccess
#   PHP Time Zone
    php_value date.timezone Australia/Melbourne

我得到了可怕的错误:

服务器遇到内部错误或配置错误,无法完成您的请求。

联系服务器管理员没有意义,因为那是我。

error_log文件有这个:

无效的命令“php_value”,可能拼写错误或由服务器配置中未包含的模块定义

过去这在 Apache 2.4 上一直有效,当我在 XAMPP 上使用 Apache 2.4 时也有效。所以很明显在其他一些配置中有一些东西,可能httpd.conf会导致它崩溃。

我缺少什么设置,还是应该更改?

更新

正如下面@Chi.CJRajeevaLochana 所回答的那样,解决方案在于使用正确的 MPM。就我而言,在文件中00-mpm-conf

  • 注释掉

    LoadModule mpm_event_module modules/mod_mpm_event.so

  • 取消注释

    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

有关详细信息,请参阅:

4

2 回答 2

3

当您使用 mod_mpm_event 或 mod_mpm_worker 而不是 mod_mpm_prefork 时,您将无法使用 PHP 模块。这是因为 mod_mpm_event 和 mod_mpm_worker 是线程模块。而且 PHP 模块不是线程安全的。

如果您不确定如何执行此操作,请查看 Soufiane ELH 的教程,该教程应高于/低于此答案。

于 2020-04-29T05:18:25.333 回答
1

在 centos 8 上默认启用事件模块 .. 检查您拥有的模块:

#sudo httpd -V | grep -i mpm

如果您启用了 enent 模块,请禁用它并启用 prefork 模块:

  • 编辑 /etc/httpd/conf.modules.d/00-mpm.conf 文件
  • 注释掉事件模块的行
  • 取消注释 prefork 模块的行
  • 重启阿帕奇

再次检查 apache 启用的模块,你会发现 prefork :

# sudo httpd -V | grep -i mpm
Server MPM:     prefork
于 2020-12-15T17:44:19.390 回答