2010-08-01 178 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”将其中的块安装在您的服务器上,您可以找到为其设置的所有值的块。