| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Глава 23. Безопасный режим/Safe ModeБезопасный режим PHP это попытка разрешения проблемы безопасности совместно используемого сервера. Архитектурно некорректно пытаться решить эту проблему на уровне PHP, но, поскольку альтернативы уровня web-сервера и ОС не слишком реалистичны, многие, особенно ISP, используют safe mode. Таблица 23-1. Директивы конфигурации, управляющие режимом safe mode
Когда safe_mode включён/on, PHP проверяет, совпадает ли owner/владелец текущего скрипта с owner файла, которым оперирует функция работы с файлами. Например:
Запуск на выполнение этого script.php
приводит к такой ошибке, если safe mode активен:
Однако может быть такое окружение, когда строгая проверка UID не подходит, а достаточно менее строгой проверки GID. Это поддерживается посредством переключателя safe_mode_gid. Установка его в On выполняет проверку GID, а установка Off (по умолчанию) выполняет проверку UID. Если вместо safe_mode вы установите директорию open_basedir, то все операции с файлами будут проводиться только с файлами в пределах этой директории. Например (пример Apache httpd.conf):
Если вы запустите тот же самый скрипт script.php с установкой open_basedir, то результат будет таким:
Вы можете также отключить отдельные функции. Обратите внимание, что директива disable_functions
не может использоваться вне файла php.ini, то есть вы не можете отключать функции на уровне директории или на уровне
виртуального хоста в вашем файле httpd.conf.
то мы получим на выводе:
Функции, ограниченные/отключённые режимом safe modeЭто, скорее всего, неполный и, возможно, не вполне корректный листинг функций, ограниченных режимом safe mode. Таблица 23-2. Функции, ограниченные безопасным режимом/Safe mode
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|