繁体   English   中英

什么是 mod_php?

[英]What is mod_php?

在阅读Zend 教程时,我遇到了以下语句:

请注意,.htaccess 中的 php_flag 设置仅在您使用 mod_php 时才有效。

有人能解释一下这是什么意思吗?

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 可以更好地通信


在评论后重新编辑:使用 CGI 或mod_php取决于您:这只是您的网络服务器配置的问题。

要知道您的服务器上当前使用的是哪种方式,您可以检查phpinfo()的输出:应该有一些东西表明 PHP 是通过mod_php (或mod_php5还是通过 CGI 运行。

您可能还想看看php_sapi_name()函数:它返回 Web 服务器和 PHP 之间的接口类型


如果您检查 Apache 的配置文件,在使用mod_php ,应该有一个LoadModule行,如下所示:

LoadModule php5_module        modules/libphp5.so

(右侧的文件名可以不同——例如,在 Windows 上,它应该是.dll

这个答案来自TuxRadar

通过 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 版本更可取。

您的服务器需要安装 php 模块,以便它可以解析 php 代码。

如果你在 ubuntu 上,你可以很容易地做到这一点

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

否则你可以用 php 编译 apache: http : //dan.drydog.com/apache2php.html

指定您的服务器操作系统将有助于其他人更具体地回答。

这意味着您必须将 PHP 作为模块安装在 Apache 中,而不是将其作为 CGI 脚本启动。

除了这些答案之外,mod_php 是 HTTPD 服务器中可用的最古老和最慢的使用 PHP 的方法。 不推荐使用,除非您运行的是旧版本的 Apache HTTPD 和 PHP。 PHP-FPM 和 proxy_cgi 是首选方法。

mod_php 是一个 PHP 解释器。

从文档中,mod_php 的一个重要问题是,

“mod_php 不是线程安全的,并迫使您坚持使用 prefork mpm(多进程,无线程),这是最慢的配置”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM