В предыдущей статье цикла мы начали рассматривать системные переменные или директивы РНР, которые устанавливаются через файл php.ini и позволяют тонко настроить среду исполнения РНР. Мы уже рассмотрели общие директивы РНР, теперь же перейдем к настройке отдельных модулей и расширений, которые поставляются вместе с дистрибутивом. Мы будем рассматривать конфигурацию РНР версии 5.0.х, так что если у вас более ранняя версия, некоторые директивы могут отсутствовать. Напомним, что директивы для отдельных модулей находятся в секциях, обозначаемых как [название секции], например: [ODBC] отвечает за настройки связи с базами данных через механизм ODBC, а [MySQL] – за настройку параметров доступа к серверу MySQL.
Имена директив могут отличаться от общесистемных – для отдельных модулей они могут иметь вид имя_модуля.имя_директивы.
Так же как и для остальных параметров, директивы отдельных модулей можно в большинстве случаев устанавливать не только через php.ini, но и с помощью уже описанной функции ini_set().
[mail function]
В этой секции описываются параметры отправки почты – РНР для этого использует общесистемную почтовую программу, традиционно это sendmail (которая есть как для платформы Unix/Linux, так и для Win32). Для различных систем некоторые директивы отличаются, поэтому внимательно смотрите на комментарии.
SMTP = [localhost/mail host] – указывает на имя SMTP-сервера, который используется для отправки почты. Если сервер на локальной машине – localhost. Директива только для Win32. Другая директива, smtp_port, устанавливает порт, по которому происходит соединение с сервером. По умолчанию это
sendmail_from = [me@localhost.com/адрес e-mail] – определяет обратный адрес, который подставляется во все отсылаемые письма. Это может быть или общий почтовый адрес вида info@domen.com, или любой другой адрес, на который будет уходить письмо. Этот адрес будет задействован, если при вызове функции mail() в скрипте вы не укажете другого обратного адреса.
sendmail_path = [\usr\sbin\sendmail -t –i/путь к опции sendmail] – директива задает путь к программе sendmail, которая используется для отправки почты. Кроме пути тут же задаются и параметры, передаваемые в sendmail для корректной работы. Хотя в документации указывается, что директива только для Linux/Unix, но если вы на win32-сервере используете sendmail или другой сервер электронной почты, допускающий работу с командной строкой, вы можете использовать директиву для настройки доступа. Например, в пакете «Денвер» под Windows используется эта директива для работы с собственным почтовым сервером-"заглушкой", который используется при отладке приложений. Так что вот такая общая рекомендация – внимательно читайте комментарии, но и старайтесь логически определить, может ли директива быть полезной, несмотря на иногда чересчур критические и строгие комментарии разработчиков.
[ODBC]
Раздел служит для настройки конфигурации модуля для работы с базами данных через ODBC. К некоторым распространенным базам данных PHP содержит встроенные интерфейсы (а к MySQL даже два разных интерфейса), а через универсальный интерфейс ODBC (Open DataBase Connectivity) можно получить доступ к любой базе данных, которая его поддерживает.
odbc.allow_persistent = [On/Off] – РНР изначально пытается использовать постоянные соединения с базой данных (это относится не только к ODBC, но и к другим БД), не закрывая текущее соединение при завершении работы. Это позволяет существенно снизить нагрузку на сервер и повысить скорость работы, ведь установка нового соединения очень ресурсоемкий процесс, да и их число всегда ограничено. Все директивы, связанные с постоянными подключениями, могут устанавливаться только до инициализации ядра РНР, то есть только в файлах php.ini или httpd.conf.
odbc.check_persistent = [On/Off] – разрешает проверку на наличие уже открытого соединения с базой, прежде чем создавать новое. Должна устанавливаться в паре с предыдущей директивой, odbc.allow_persistent, и только в файлах php.ini или httpd.conf.
odbc.max_links = [-1/целое число] – задает ограничение на общее количество одновременно открытых подключений к базе данных.
odbc.defaultlrl = [4096/целое число] – задает объемы данных (в байтах), которые возвращаются из столбцов типа LONG. Для отмены ограничения и передачи всех данных сразу используйте 0.
[MySQL]
РНР почти в 99% случаев используется в связке с базой данных MySQL, особенно если речь идет про веб-приложения. РНР 5.0 поддерживает как старый интерфейс для связи с MySQL, так и новый, названный MySQLI, который позволяет использовать все преимущества серверов версий 4.0 и выше. Секция [MySQL] отвечает за традиционный интерфейс, а [MySQLI] – за конфигурацию нового расширения.
mysql.allow_persistent = [On/Off] – MySQL старается использовать постоянные соединения, когда это возможно. По умолчанию эта опция разрешена. В коде вы можете использовать обычную функцию mysql_connect(), которая создает новое соединение при каждом вызове, но РНР сам будет использовать уже существующие подключения, если они разрешены. Но есть модификация, mysql_pconnect(), которая явно указывает, что надо использовать постоянное соединение – уже существующее или новое, если такого еще нет.
mysql.default_port = [none/номер порта] – задает порт, который используется для соединения с сервером базы данных. Если не задано, РНР пытается использовать значение, заданное на этапе сборки ядра (MYSQL_PORT). Стандартный порт – 3306, если вы не меняете его, значение можно оставить пустым. Порт можно указывать и прямо в коде как параметр в процедуре mysql_connect().
mysql.default_socket = [none/имя сокета] – если связь с базой происходит через сокеты, то этой директивой задается имя сокета, через который происходит соединение. Изначально сокет не задан, и РНР использует указанный на этапе сборки или требует, чтобы он определялся при вызове mysql_connect().
mysql.default_host = [none/localhost/host] – имя компьютера или IP-адрес сервера базы данных MySQL. Директива игнорируется при работе РНР в защищенном режиме (safe-mode). Если не задана, none или null, то РНР пытается использовать хост по умолчанию (или заданный при сборке, или localhost).
mysql.default_user = [none/имя пользователя] – пользователь, от имени которого происходит соединение с базой данных, если этот параметр не указан при вызове функции mysql_connect(). Из соображений безопасности рекомендуется не устанавливать эту директиву, особенно в публичных серверах, а также настроить сервер MySQL (отключить пустую учетную запись).
mysql.default_password = [none/пароль] – задает пароль пользователя по умолчанию. Хранение здесь пароля для доступа к серверу БД очень ослабляет безопасность всего сервера – ведь, если помните, любой пользователь может, используя функцию ini_get(), получить значение любой директивы и таким образом получить доступ к базе данных. Если директива не задана, пароль и имя пользователя определяются при каждом вызове функции mysql_connect().
mysql.connect_timeout = [60/-1/целое число] – задает время, по истечении которого разрывается соединение (если оно не используется скриптом). Но если используются постоянные соединения, то РНР может повторно его использовать после завершения работы одного скрипта.
mysql.trace_mode = [Off/On] – устанавливает режим показа ошибок и предупреждений, которые генерирует MySQL. Изначально опция отключена, и для просмотра ошибки в ходе работы с базой вам необходимо вызывать специальные функции, например mysql_error().
[MySQLI]
MySQLI, или Improved MySQL Extension, – это новый механизм для доступа к базе данных MySQL, разработанный специально для РНР 5. Он предназначен для работы только с серверами версии 4.1.3 или выше, так что если вы используете РНР 5, но предыдущие версии MySQL, вам необходимо использовать традиционный интерфейс. Новый интерфейс существенно отличается от старого, ему стоит посвятить несколько отдельных публикаций, а на уровне директив конфигурации отличия минимальные – все директивы точно такие же, как и в секции [MySQL], только с префиксом в названии mysqli – mysqli.default_port, mysqli.default_host. Добавилась новая директива, mysqli.reconnect = [Off/On], которая управляет процессом переподключения в результате сбоя или обрыва соединения.
В самом файле php.ini опция, которая задает пароль пользователя, в версии РНР 5.0.2 имеет название, идентичное такой же директиве секции [MySQL], – mysqli.default_password, в то же время в документации эта опция описывается как mysqli.default_pw. Во всяком случае, РНР 5 пока еще не выпущен в качестве стабильного релиза, хотя уже бета-версии полностью работоспособны.
MySQL далеко не единственная база данных, с которой работает РНР, – более того, наверное, сложно найти такую БД, которая бы использовалась для построения веб-приложений и не имела РНР-интерфейса. Большая часть опций конфигурации в файле рhр.ini как раз и посвящена настройке доступа к различным БД. Мы продолжим рассматривать их в следующих статьях.
Ссылки по теме
- PHP official site
- PHP Manual: Runtime Configuration
- PHP: секреты файла php.ini. Часть 1
- PHP: секреты файла php.ini. Часть 2
- PHP: секреты файла php.ini. Часть 4
Статья получена: hostinfo.ru