PHP的两种方式CGI和mod_php的比较

最近PHP又爆出漏洞:

‘当 PHP 以 CGI 模式运行时 (如 Apache 的 mod_cgid), php-cgi 会接受处理一個查询字符串作为命令行参数以开启某些功能

如 -s, -d 或 -c 传递给 php-cgi, 此处存在的漏洞可以允许攻击者查看源码或进行任意代码执行'

然后PHP 开发者向 PHP 5.3.12 和 5.4.2 发布了补丁,但很快被发现补 丁并未能真的修补该漏洞。现在PHP已经发布了PHP 5.4.3和5.3.13来解决这个漏洞


那么怎么查看PHP的运行模式呢

可以直接使用phpinfo()函数来进行查看

或者使用php_sapi_name()函数来查看。

一般情况下,在apache配置文件中使用 LoadModule 的方式都是mod_php方式运行的PHP


下面说明一下这两种运行方式的区别

以CGI方式运行PHP,意味着apache需要知道PHP执行文件的位置,然后apache才能运行PHP,当我们浏览一个页面时,apache会去调用php可执行文件来解析,这时PHP需要读取配置文件(php.ini),加载配置文件中启用的所有扩展模块,然后开始解析php脚本,每次浏览页面都要重复上面的动作(读取配置文件->加载扩展模块->解析脚本)。

以mod_php模式运行PHP,意味着php是作为apache的一个模块来启动的,因此只有在apache启动的时候会读取php.ini配置文件并加载扩展模块,在apache运行期间是不会再去读取和加载扩展模块的,(这也是为什么当我们以这种模式运行PHP时每次修改php.ini的配置信息都需要重启apache来使配置生效)

显然使用mod_php的方式运行PHP效率更高,因为配置文件和扩展模块只会加载一次。因此我们应该优先使用这种方式运行PHP,只有频繁的改动php.ini配置,而又不想重启apache时才使用CGI模式。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值