Я хочу использовать glob()
в сценарии php, но я получил от пользователей отчеты о том, что это не всегда разрешено на сервере. Один пользователь сообщил о следующей ошибке:
Warning: glob() has been disabled for security reasons
Как определить, разрешен ли глобус? Это сделано через disable_functions, или есть другие способы отключить glob? Safe_mode также отключает glob? (один комментатор на php.net говорит так).
Существуют ли способы надежной проверки, если это разрешено, кроме проверки safe_mode & disable_functions (как предложено в: Как проверить, разрешена ли функция PHP system ()? и не выключен по соображениям безопасности)
насколько мне известно glob
можно отключить только с помощью disable_functions
настройка ini. использование 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)
glob()
функция возвращает NULL
если он отключен, так:
if (($res = glob('*')) === null) {
//try something else
} else {
// $res should be an array or false
}
Кстати, это не помешает появлению предупреждения; Вы можете либо замолчать, либо вообще игнорировать.