2010-08-01 179 views
16

我不熟悉Suhosin(從未使用它),但如果可能的話,我需要檢查使用PHP是否安裝。這是我正在編寫的安裝程序的一部分。謝謝。如何檢查Suhosin是否安裝?

回答

19

要檢測了Suhosin擴展來使用extension_loaded()不管它是動態加載或靜態編譯:

extension_loaded('suhosin'); 

爲了檢測了Suhosin貼片,則檢查是否存在恆定:

constant("SUHOSIN_PATCH"); 
2
extension_loaded('suhosin'); 

PHP文檔extension_loaded

如果擴展名不加載,它可能仍然是可以通過dl

if (!extension_loaded('suhosin')) { 
    if (!dl('suhosin.so')) { 
     // Extension not loaded. 
     return false; 
    } 
} 

// Extension loaded. 
return true; 
+3

如果您將suhosin編譯爲PHP解釋器的一部分,這將不起作用。作爲擴展安裝不是唯一的安裝方式。 http://www.hardened-php.net/suhosin/how_to_install_or_upgrade.html – 2010-08-01 23:02:20

+0

@netme,我沒有意識到這一點,對不起。 – strager 2010-08-01 23:14:28

2

如果配置打開設置爲了Suhosin可以測試:

$isSuhosinInstalled = ini_get('suhosin.session.max_id_length') !== ''; 
+0

這不適用於安裝了Suhosin的所有系統。在許多系統上,Suhosin默認是未配置的。我試過我的2個主機,兩個變量都沒有初始化。 Odd; – 2010-08-02 06:21:37

+0

@netme,Odd;我以爲PHP填充了默認值,如果它從實際配置文件中丟失。好吧。 – strager 2010-08-02 11:37:34

6

簡單的寫像<?php phpinfo(); ?> 在您的文檔根目錄的PHP文件,將打印所有涉及到PHP安裝的信息只是找到適合「了Suhosin」將其中的塊安裝在您的服務器上,您可以找到爲其設置的所有值的塊。