什么是mod_php?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

在阅读Zend教程时,我遇到了以下声明:

请注意,如果您使用mod_php,.htaccess中的php_flag设置才有效。

有人可以解释这意味着什么吗?

提问于
用户回答回答于

mod_php意味着PHP,作为Apache模块

基本上,当mod_php作为Apache模块加载时,它允许Apache解释PHP文件(由那些解释的mod_php文件

当使用Apache时,有(至少)两种运行PHP的方式:

  • 使用CGI:一个PHP进程由Apache启动,它是解释PHP代码的PHP进程 - 而不是Apache本身
  • 使用PHP作为Apache模块 (称为mod_php:PHP解释器在Apache过程中是“嵌入式”的:没有外部PHP过程 - 这意味着Apache和PHP可以更好地交流

用户回答回答于

当通过Web服务器运行PHP时,有两种不同的选择:使用PHP的CGI SAPI运行它,或者将其作为Web服务器的模块运行。每个人都有自己的好处,但总体而言,该模块通常是首选。 将PHP作为CGI运行意味着基本上告诉你的Web服务器PHP可执行文件的位置,并且服务器运行该可执行文件,并在每次访问页面时为其提供所调用的脚本。这意味着每次加载页面时,PHP都需要读取php.ini并设置它的设置,它需要加载它的所有扩展,然后它需要开始解析脚本 - 有很多重复的工作。 当你将PHP作为模块运行时,PHP从字面上位于你的Web服务器内部 - 它只启动一次,仅加载其设置和扩展一次,并且还可以跨会话存储信息。例如,PHP加速器依靠PHP能够跨请求保存缓存数据,这是使用CGI版本所不可能的。 使用PHP作为模块的明显优势在于速度 - 如果你将CGI转换为模块,你将看到很大的速度提升。许多人,特别是Windows用户,并没有意识到这一点,并继续使用php.exe CGI SAPI, 模块通常快三到五倍。 但是,使用CGI版本有一个关键优势,那就是PHP每次加载页面时都会读取它的设置。在PHP作为模块运行时,如果正在测试大量新设置并希望看到即时响应,则在php.ini文件中所做的任何更改都无法启动,除非你重新启动Web服务器,这使得CGI版本更可取。

扫码关注云+社区