PHP的兩種方式CGI和mod php的比較

2021-06-06 08:01:39 字數 902 閱讀 8269

最近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模式。

C DLL匯出的兩種方式和鏈結的兩種方式

第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...

PHP 使用soap有兩種方式。

一 用wsdl檔案 伺服器端。class service public function add a,b server new soapserver soap.wsdl array soap version soap 1 2 server setclass service server handle...

php擴充套件庫兩種安裝方式

pecl擴充套件庫是通過pear 打包系統來的 php 擴充套件庫倉庫。pecl命令類似centos的yum工具。php的擴充套件庫可以通過pecl工具進行安裝,也可進行原始碼編譯安裝。比如我們要安裝擴充套件庫solr,樣例如下 pecl install solr 2.4.0.tgz 2 原始碼安裝...