Анонсы:
|
PHP. Урок 23 Настройка PHPУрок 23. Настройка PHPВ этом уроке вы научитесь изменять глобальные настройки PHP во время выполнения и при помощи файла php.ini, а также для отдельных каталогов при помощи .htaccess. Настройки конфигурацииPHP позволяет настраивать множество различных аспектов поведения с помощью набора директив настройки. Эти инструкции могут быть глобальными для всего сервера или локальными, в рамках одного сценария. Возможности php.iniФайл настройки PHP называется php.ini. Его размещение определяется во время компиляции. Обычно это /usr/local/lib/php.ini на Linux/Unix серверах и C:\WINDOWS\php.ini для Windows-систем. В файле php.ini находится список директив и их значений, которые разделяются знаком равенства. Обычно php.ini, который поставляется с PHP, очень хорошо документирован и содержит множество комментариев. Комментирующие строки начинаются точкой с запятой. Кроме того, файл разделяется на секции при помощи заголовков в квадратных скобках. Они тоже игнорируются компилятором. В листинге 23.1 содержится часть оригинального php.ini из PHP 5, в которой содержаться настройки ведения журнала. Как видите, чтобы внести изменения, документация зачастую не нужна.
True или False. Булевым значениям в php.ini соответствуют on или yes для true и off, no или none для false. Эти значения не зависят от регистра. Если PHP работает как модуль сервера, php.ini перечитывается перед запуском сервера. Все последующие изменения в конфигурационном файле не влияют на работу сервера до очередного перезапуска. Если PHP работает как CGI, настройки php.ini загружаются во время каждого выполнения сценария, потому что запускается новый процесс php. PHP в режиме командной строки также перечитывает содержимое php.ini при каждом запуске. Замена файла php.iniМожно создать отдельную версию php.ini для различных способов запуска PHP. Если создать файл с именем php-SAPI.ini (нужно заменить SAPI на соответствующее имя SAPI), он будет использоваться вместо глобального php.ini. Например, чтобы задать опции только для командной строки PHP, нужно создать файл с именем php-cli.php. Для модуля Web-сервера Apache файл должен называться php-apache.ini. На платформе Windows сначала используется файл php.ini в каталоге Apache, а потом тот, что находится в C:\WINDOWS. Это позволяет задать различные установки PHP для различных Web-серверов на одном хосте. Чтобы установить принудительное использование конфигурационного файла, нужно вызвать php с опцией -c. В сценариях оболочки можно изменить первую строчку на ту, что приведена ниже. Тогда данный сценарий всегда запускается со специальным конфигурационным файлом: Настройка для отдельного каталогаСпециальный файл .htaccess позволяет изменять настройки Web-сервера Apache. C помощью .htaccess также можно менять глобальные настройки php.ini. C помощью инструкции php_value можно задать новое значение директивы из файла php.ini. Для этого после нее нужно указать инструкцию и новое значение. В следующей строке файла .htaccess директиве max_execution_time устанавливается значение 60 секунд: Использование .htaccessНужно внимательно следить за синтаксисом при изменении настроек в php.ini и .htaccess. В php.ini между инструкцией и значением должен быть знак равенства. В .htaccess значение следует после названия директивы без знака равенства. Изменения, внесенные только файлом .htaccess, влияют только на текущий каталог и его подкаталоги. Все установки в .htaccess заменяют глобальные установки php.ini, а также все установки в родительском каталоге. Динамическая настройкаЗначения, установленные в файле php.ini, можно менять во время выполнения с помощью функции ini_set. На вход нужно подать два аргумента: имя конструкции и новое значение. При изменении значения директивы функция ini_set возвращает предыдущее значение этой директивы. В следующем примере изменяется значение директивы memory_limit для текущего сценария это сделано для блока кода, который требует больше системных ресурсов: Предыдущее значение сохраняется в переменной. После завершения директива принимает начальное значение. Функция ini_get позволяет узнать текущее значение директивы в php.ini. Директивы настройкиВ коротком уроке нельзя охватить все настройки php.ini, их очень много. Поэтому ниже рассматриваются только самые используемые. Настройка PHP-окруженияВ следующем разделе приводится список наиболее используемых инструкций, которые влияют на окружение PHP. Все инструкции приводятся со стандартными значениями из php.ini, который поставляется с PHP 5. Стиль дескрипторов PHPЭти установки позволяют выбрать стиль дескрипторов, который используется в сценарии PHP:
Ограничение системных ресурсовСледующие инструкции позволяют управлять системными ресурсами, доступными в сценарии PHP.
Обработка формС помощью этих инструкций, можно изменить способ взаимодействия PHP с формами.
Подключение файловМожно использовать инструкцию include_path, чтобы задать список мест, где искать файлы для выражений include и require. Эти значения разделяются с помощью двоеточия в Linux/Unix системах и точкой с запятой — в Windows. Часто нужно дать возможность подключить файл, который содержится за пределами Web-сервера. В примере ниже задается путь для подключения. Он содержит каталог, параллельный корневому каталогу Web-сайта /home/chris/public_html: Точка (.) используется для задания текущего каталога. В этом примере она имеет больший приоритет, чем заданный путь подключения. Если выражение include найдет нужный файл в обоих каталогах, подключается файл в рабочем каталоге. Этот механизм позволяет использовать одинаковые библиотеки для различных сайтов. Их можно заменять при необходимости. Установки auto_prepend_file и auto_append_file позволяют задать файлы, которые автоматически добавляются при старте и завершении любого сценария PHP. Размещение файлов нужно задать в include_path или указать полный путь. Обычно auto_prepend_file используется для того, чтобы подключить часть HTML-разметки до любого вывода в сценарии, чтобы все страницы выглядели одинаково. Директива auto_prepend_file является механизмом PHP. Поэтому подключать можно только файлы, которые обрабатываются PHP. Для статических HTML-страниц такой возможности нет. HTTP-заголовки. После отправки вывода на браузер нельзя использовать функцию header для HTTP-заголовков, а также другие механизмы PHP, которые работают с заголовками. Например, сеансы и cookies. Поэтому, если нужно посылать специальные HTTP-заголовки, все сценарии, которые подключаются с помощью auto_prepend_file, не должны генерировать вывод. Ведение учета ошибокВ уроке 22, "Обработка ошибок", было показано, как настроить PHP для ограничения вывода сообщений об ошибках. Значение директивы error_reporting является побитовой маской, составленной из значений, приведенных в табл. 22.1. Можно использовать логические операторы, чтобы комбинировать эти значения, как показано ниже: Директивы display_errors и log_errors устанавливают вывод ошибок на экран и в файл журнала, соответственно. В стандартной конфигурации ошибки выводятся на экран и не записываются в файл журнала: C помощью инструкции error_log можно задать альтернативный файл журнала: Настройка расширений PHPНекоторые расширения PHP имеют собственные директивы настройки в php.ini, которые позволяют изменять их поведение. Для большей ясности в конфигурационном файле используются заголовки разделов. Они разделяют установки по по расширениям. Например, все установки для расширения MySQL находятся в разделе php.ini, который начинается с [MySQL]. Каждое имя инструкции содержит префикс, содержащий название расширения (например: mysql.connect_timeout или session.cookie_path). Документацию по специфическим инструкциям для расширений можно найти в электронном справочнике для каждого расширения. Настройка безопасности системыВ этом уроке не рассматриваются директивы php.ini. Это относится к safe_mode и другим настройкам безопасности, которые ограничивают функциональность на Web-сервере. Подгружаемые модулиPHP позволяет загружать отдельные расширения во время выполнения. Так можно расширять функциональность PHP без перекомпиляции исходных файлов. Загрузка расширения по требованиюС помощью функции dl можно динамически подгружать модуль расширения. Для этого нужно собирать расширение как динамически загружаемый объект при компиляции PHP. Это реализуется с помощью опции —with-EXTENSION=shared. Например, следующие выражение configure устанавливает компиляцию PHP с поддержкой MySQL. Но сокеты будут поддерживаться для динамической загрузки: Функции dl нужно передать аргумент — имя файла расширения. Для сокетов этот файл называется sockets.so на Linux/Unix системе и php_sockets.dll для Windows. Подгружаемые расширения. Чтобы функция dl работала, нужно включить директиву enable_dl в php.ini. На некоторых общих серверах эту возможность отключают. Функция extension_loaded позволяет проверить, загрузилось ли нужное приложение. На вход нужно подать название расширения, а на выходе получим TRUE или FALSE в зависимости от наличия данного расширения. Отметим, что PHP не может определить, как загрузилось расширение: с помощью dl или оно скомпилировано с PHP. Загрузка модулей при стартеЕсли есть подгружаемый модуль и нужно чтобы он загружался в PHP без вызова dl в каждом сценарии, можно воспользоваться директивой extension в php.ini. Она позволяет задать список расширений, которые нужно загрузить при старте. Каждое расширение задается в отдельной строке. Ограничение на количество расширений нет. В следующих строках из php.ini дается указание автоматически загрузить модули sockets и imap для Linux/Unix сервера: Для Web-сервера под управлением Windows эти инструкции выглядят по-другому: РезюмеВ этом уроке вы узнали о настройке PHP во время работы. В следующем уроке вы узнаете о том как работает безопасный режим и как увеличить безопасность Web-сервера. |
Погода в Рудне на 10 Дек 2024 г. 704 - Вьетнамских донгов - 1 |