【发布时间】:2010-04-26 10:55:41
【问题描述】:
【问题讨论】:
【问题讨论】:
mod_php 表示 PHP,作为 Apache 模块。
基本上,当将mod_php 作为 Apache 模块加载时,它允许 Apache 解释 PHP 文件(这些文件由 mod_php 解释)。
编辑:在使用 Apache 时,(至少)有两种运行 PHP 的方法:
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)
【讨论】:
mod_php 是迄今为止最常见的配置。
mod_php 不是真正的PHP;它只是一个 Apache 插件。或者更确切地说,我认为您应该从定义 PHP 的含义 exactly 是什么? 开始回答。
您的服务器需要安装 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
指定您的服务器操作系统将有助于其他人更具体地回答。
【讨论】:
此答案取自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 版本更可取。
【讨论】:
补充一下这些答案是,mod_php 是 HTTPD 服务器中使用 PHP 的最古老和最慢的方法。不建议这样做,除非您运行的是旧版本的 Apache HTTPD 和 PHP。 PHP-FPM 和 proxy_cgi 是首选方法。
【讨论】:
mod_php 是一个 PHP 解释器。
从文档中,mod_php 的一个重要收获是,
“mod_php 不是线程安全的,它迫使你坚持使用 prefork mpm(多进程,无线程),这是最慢的配置”
【讨论】:
这意味着您必须将 PHP 作为一个模块安装在 Apache 中,而不是作为 CGI 脚本启动它。
【讨论】: