检查是否允许glob()

时间:2014-12-08 10:00:14

标签: php glob

我想在php脚本中使用glob(),但我收到了用户的报告,说服务器上并不总是允许它。一位用户报告了以下错误:

Warning: glob() has been disabled for security reasons

如何检测是否允许使用glob?这是通过disable_functions完成的,还是有其他方法可以禁用glob? safe_mode也会禁用glob吗? (php.net says so上的一位评论者)。

有没有办法可靠地检查是否允许除了检查safe_mode& disable_functions(如:how to test if PHP system() function is allowed? and not turned off for security reasons中所述)

2 个答案:

答案 0 :(得分:4)

glob()函数如果被禁用则返回NULL,所以:

if (($res = glob('*')) === null) {
    //try something else
} else {
    // $res should be an array or false
}
不过,这不会阻止警告出现;你可以选择沉默或完全忽略它。

答案 1 :(得分:3)

只能使用glob ini设置禁用AFAIK disable_functions。使用function_exists()检测它是否可用:

if(function_exists('glob')) {
    glob('...');
}

你可以尝试使用这个简单的测试:

you@server ~ $ php -ddisable_functions='glob' -r 'var_dump(function_exists("glob"));'
bool(false)

you@server ~ $ php -r 'var_dump(function_exists("glob"));'
bool(true)