答案 0 :(得分:141)
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
运行的(或{{1} }),或通过CGI。
您可能还想查看php_sapi_name()
函数:它返回Web服务器和PHP 之间的接口类型。
如果您签入Apache的配置文件,那么在使用mod_php5
时,应该有mod_php
行,如下所示:
LoadModule
(右侧的文件名可以不同 - 例如,在Windows上,它应该是LoadModule php5_module modules/libphp5.so
)
答案 1 :(得分:56)
此答案取自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版本更受欢迎。
答案 2 :(得分:9)
您的服务器需要安装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
指定服务器操作系统将有助于其他人更具体地回答。
答案 3 :(得分:4)
这意味着您必须将PHP作为模块安装在Apache中,而不是将其作为CGI脚本启动。
答案 4 :(得分:1)
只需在这些答案上加上,mod_php是HTTPD服务器中用户PHP可用的最古老,最慢的方法。除非您正在运行旧版本的Apache HTTPD和PHP,否则不建议使用。 php-fpm和proxy_cgi是首选方法。
答案 5 :(得分:0)
mod_php是一个PHP解释器。
从文档中可以看到,mod_php的一个重要收获是
“ mod_php不是线程安全的,并且迫使您坚持使用prefork mpm(多进程,无线程),这是最慢的配置”