我想在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中所述)
答案 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)