Apache 2.4、.htaccess和php指令错误

Apache 2.4、.htaccess和php指令错误,php,apache,.htaccess,centos8,Php,Apache,.htaccess,Centos8,我已经升级到Centos 8,发现自己不得不应对Apache 2.4中的变化。我已经开始让它工作,但是我在.htaccess中的一个简单设置中遇到了一个令人困惑的错误: # .htaccess # PHP Time Zone php_value date.timezone Australia/Melbourne 我犯了一个可怕的错误: 服务器遇到内部错误或配置错误,无法完成您的请求 没有必要联系服务器管理员,因为那是我 错误日志文件包含以下内容: 无效命令“php_value”

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

#   .htaccess
#   PHP Time Zone
    php_value date.timezone Australia/Melbourne
我犯了一个可怕的错误:

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

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

错误日志
文件包含以下内容:

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

这在过去的Apache2.4上一直有效,在XAMPP上使用Apache2.4时也有效。所以很明显,在其他一些配置中,可能是在
httpd.conf
中,有某种东西导致它崩溃

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

更新

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

  • 点评

    LoadModule mpm\U事件\u模块/mod\u mpm\U事件。因此

  • 取消注释

    LoadModule mpm\u prefork\u module modules/mod\u mpm\u prefork.so

有关更多信息,请参阅:


当您使用mod_mpm_事件或mod_mpm_worker而不是mod_mpm_prefork时,您将无法使用PHP模块。这是因为mod_mpm_事件和mod_mpm_工作者是线程化模块。PHP模块不是线程安全的


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

当您使用mod_mpm_事件或mod_mpm_worker而不是mod_mpm_prefork时,您将无法使用PHP模块。这是因为mod_mpm_事件和mod_mpm_工作者是线程化模块。PHP模块不是线程安全的


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

事件模块在centos 8上默认启用。。要检查您的wich模块,请执行以下操作:

#sudo httpd -V | grep -i mpm
如果启用了eNet模块,请禁用它,然后启用预工作模块:

  • 编辑/etc/httpd/conf.modules.d/00-mpm.conf文件
  • 注释掉事件模块的行
  • 取消注释预工作模块的行
  • 重新启动apache
再次检查apache启用的模块,您将发现prefork:

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

事件模块在centos 8上默认启用。。要检查您的wich模块,请执行以下操作:

#sudo httpd -V | grep -i mpm
如果启用了eNet模块,请禁用它,然后启用预工作模块:

  • 编辑/etc/httpd/conf.modules.d/00-mpm.conf文件
  • 注释掉事件模块的行
  • 取消注释预工作模块的行
  • 重新启动apache
再次检查apache启用的模块,您将发现prefork:

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


请参阅错误日志文件。然后把一些最新的输出粘贴到这里。为什么不呢?它只是一个默认设置,问题不在于时区设置本身,您可以在php.ini文件中进行设置。请参阅错误日志文件。在这里粘贴一些最新的输出。您是否使用php作为apache模块?如果您使用的是类似PHP-FPM的东西,则需要使用PHP.ini文件。当您使用mod_mpm_事件或mpm_mpm_worker而不是mod_mpm_prefork时,您将无法使用PHP模块。请参阅错误日志文件。然后把一些最新的输出粘贴到这里。为什么不呢?它只是一个默认设置,问题不在于时区设置本身,您可以在php.ini文件中进行设置。请参阅错误日志文件。在这里粘贴一些最新的输出。您是否使用php作为apache模块?如果您使用的是类似PHP-FPM的东西,则需要使用PHP.ini文件。当您使用mod_mpm_事件或mpm_mpm_worker而不是mod_mpm_prefork时,您将无法使用PHP模块。当我构建httpd-2.4.46时,我既没有
mod_mpm_事件,也没有
mod_mpm_prefork.so
。这是否意味着构建出错了?应该从服务器文件夹中的
prefork.c
生成正确吗?@Brian Wiley,您的配置命令是什么?请参见此答案,它可能会在某些方面对您有所帮助,因此我首先尝试了这个
/configure--prefix=/usr/local--with module=mpm prefork--with mpm=prefork
,它本应该基于文档和configure-h工作,但后来它在制作“mpm prefork”(应该删除mod_uu)时出现问题,并用-)替换下划线。但是,如果您只是删除
——使用module=mpm prefork
,它就可以工作。所以这应该适用于任何其他人
/configure--with mpm=prefork
我确信
--with module=mpm prefork
是无效的。。。很好,您解决了您的问题。当我构建httpd-2.4.46时,我没有
mod\u mpm\u事件。因此
mod\u mpm\u prefork。因此
在modules文件夹中。这是否意味着构建出错了?应该从服务器文件夹中的
prefork.c
生成正确吗?@Brian Wiley,您的配置命令是什么?请参见此答案,它可能会在某些方面对您有所帮助,因此我首先尝试了这个
/configure--prefix=/usr/local--with module=mpm prefork--with mpm=prefork
,它本应该基于文档和configure-h工作,但后来它在制作“mpm prefork”(应该删除mod_uu)时出现问题,并用-)替换下划线。但是,如果您只是删除
——使用module=mpm prefork
,它就可以工作。所以这应该适用于任何其他人
/configure--with mpm=prefork
我确信
--with module=mpm prefork
是无效的。。。很好,你解决了你的问题。很好,请注意,它与工作模块btw的教程相同。很好,请注意,它与工作模块btw的教程相同。