Apache 2.4、.htaccess 和 php 指令错误

Apache 2.4, .htaccess and php directive error

我已经升级到 Centos 8,发现自己不得不应付 Apache 2.4 的变化。我已经开始让它工作了,但是我在 .htaccess:

中的一个简单设置中遇到了一个令人费解的错误
#   .htaccess
#   PHP Time Zone
    php_value date.timezone Australia/Melbourne

我遇到了可怕的错误:

The server encountered an internal error or misconfiguration and was unable to complete your request.

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

error_log 文件有这个:

Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration

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

我缺少什么设置,或者我应该更改什么设置?

更新

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

有关更多信息,请参阅:

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

如果您不确定如何操作,请查看 Soufiane ELH 的教程,该教程应该是 above/below 这个答案。

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

#sudo httpd -V | grep -i mpm

如果您启用了 enent 模块,请将其禁用,然后启用 prefork 模块:

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

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

# sudo httpd -V | grep -i mpm
Server MPM:     prefork