Проверьте, разрешен ли glob ()

Я хочу использовать glob() в сценарии php, но я получил от пользователей отчеты о том, что это не всегда разрешено на сервере. Один пользователь сообщил о следующей ошибке:

Warning: glob() has been disabled for security reasons

Как определить, разрешен ли глобус? Это сделано через disable_functions, или есть другие способы отключить glob? Safe_mode также отключает glob? (один комментатор на php.net говорит так).

Существуют ли способы надежной проверки, если это разрешено, кроме проверки safe_mode & disable_functions (как предложено в: Как проверить, разрешена ли функция PHP system ()? и не выключен по соображениям безопасности)

4

Решение

насколько мне известно 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)
3

Другие решения

glob() функция возвращает NULL если он отключен, так:

if (($res = glob('*')) === null) {
//try something else
} else {
// $res should be an array or false
}

Кстати, это не помешает появлению предупреждения; Вы можете либо замолчать, либо вообще игнорировать.

4

По вопросам рекламы [email protected]