2013-10-03 34 views
2

我试图检查是否有几个PHP函数可用。源应该是一个包含函数名称的数组。不幸的是,这似乎不起作用。我总是得到一个负面回报:php检查函数是否可用与数组作为源

// Array with function names 
$func_array = array("die", 
        "echo", "empty", "exit", "eval", 
        "include", "include_once", "isset", 
        "list", 
        "print", 
        "require", "require_once", 
        "unset","exec" 
        ); 

// Check Function 
function func_avail($funcav) { 
    if (function_exists($funcav)) { 
     echo "$funcav is enabled<br/>"; 
    } 
    else { 
     echo "$funcav is not enabled<br/>"; 
    } 

} 

// Loop through array 
for ($x = 0; $x < count ($func_array); $x++) 
{ 
     func_avail($func_array[$x]); 
} 

问题1:为什么这不起作用? (输出始终未启用)

问题2:未启用(function_exists = 0)意味着该功能在php.ini中被禁用,或者这也意味着它不适用于此PHP版本。 F.E.我正尝试使用一个仅适用于较新的PHP版本的函数。

亲切的问候和,谢谢!

托尼

+0

并非所有这些都是功能。一些是语言级语法结构或伪函数。 – mario

+0

只需检查版本号 – Anthony

+0

以下是您可能会误认为函数的语言结构列表:http://php.net/manual/en/reserved.keywords.php – Anthony

回答

0

问题1:为什么这个不行?输出继电器总是未启用

...除了exec()。这是正确的:没有其他项目是功能,它们是语言结构。 (据我所知,有没有方法来禁用语言结构。)

function_exists()手册页确认:

该函数将返回FALSE的结构,如include_onceecho

 

问题2:不启用(function_exists = 0)表示 函数php.ini文件中禁用或可能这也意味着它不 可用此PHP版。 F.E.我正在尝试使用功能 ,该功能仅适用于较新的PHP版本。

这意味着什么the manual says

检查的定义函数列表中,无论是内置的(内部)和用户定义的,对函数名。

注意:即使函数本身由于配置或编译选项而不可用,函数名也可能存在(以图像函数为例)。

+0

嗨,Alvaro,好吧我想我明白了。function_exists只检查真正的php函数,因此所有其他的都是laguage结构我的输出她没有启用。我的想法背后是使用phpxref在一个应用程序中获取所有使用的php函数,并且在服务器或更好的php更新的情况下检查是否所有需要的仍然可用。 –

+0

这不可靠。您的程序可能会使用稍后添加的函数参数。 –

+0

确实...我不得不再次考虑解决PHP版本问题。谢谢。 –