Intereting Posts
«Использование неопределенного постоянного» уведомления, но константа должна быть определена Использование Zend Framework для проектов с высокой нагрузкой Regex plus против звездной разницы? Включение входа в facebook, используя facebook php-sdk (v.3.0.0), с сеансами и файлами cookie Обновление порядка отображения нескольких строк MySQL в одном или нескольких запросах получить json, используя php Загрузите на свой Google Дисковод с помощью php Смайлики iPhone вставляются в MySQL, но становятся пустым значением Фильтр SQL и PHP Mysql + php, как сделать ссылку, которая отображает все данные из записи, когда вы нажимаете «заголовок», Удалить повторяющиеся значения из многомерного массива на основе определенного ключа Как предотвратить использование методов признаков из области «использования» в PHP Подключение PHP к API MediaWiki и извлечение данных Вызов функции undefined sqlite_open Query Strings & Mod ReWrite

Проверьте, действует ли ограничение open_basedir

При использовании PHPass ( http://www.openwall.com/phpass/ ) появляется следующее предупреждение:

open_basedir restriction in effect. File(/dev/urandom) is not within the allowed path(s) 

Хотя это не большая проблема (она вернется к чему-то еще), я бы не хотел этого предупреждения. Приложение PHP должно запускаться на разных серверах, некоторые пользователи смогут добавить этот путь к разрешенным путям open_basedir, но другие не будут иметь доступа к этой конфигурации.

Сначала я предполагал проверить читаемость с помощью is_readable() , однако я все еще получаю предупреждение.

Вопрос: Как проверить, был ли добавлен определенный путь или файл в пути open_basedir?

Вы можете прочитать значение директив PHP с помощью функции ini_get() :

 ini_get('open_basedir') 

Если директива не пуста, она должна содержать строку с одним или несколькими путями, разделенными PATH_SEPARATOR .

Вы можете использовать is_readable и отключить предупреждение для этой функции с помощью @ .

Если is_readable возвращает false, то вы знаете, что оно не читается.

 $readable = @is_readable(..); if(!$readable) { ....not readable } 

file_exists выдает предупреждение, если каталог ограничен. Давайте использовать его:

 function isRestricted( $path ) { // Default error handler is required set_error_handler( null ); // Clean last error info. You can do it using error_clean_last in PHP7. @trigger_error( '__clean_error_info' ); // Testing... @file_exists( $path ); // Restore previous error handler restore_error_handler(); // Return `true` if error has occured return ($error = error_get_last()) && $error[ 'message' ] !== '__clean_error_info'; }