Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » PHP: секреты файла php.ini. Часть 2

 

PHP: секреты файла php.ini. Часть 2

 

 

В предыдущей статье цикла мы начали рассматривать системные переменные или директивы РНР, которые устанавливаются через файл php.ini и позволяют тонко настроить среду исполнения РНР. Сейчас мы продолжим знакомство с наиболее важными директивами – знание и понимание механизма их действия позволят вам полностью управлять работой РНР, построить более защищенную веб-ситему или повысить производительность своего приложения.

Мы будем рассматривать конфигурацию РНР версии 5.0.х, так что, если у вас более раняя версия, некоторые директивы могут отсутствовать.

display_startup_errors = [Off/On] – управляет отображением сообщений про ошибки на этапе инициализации и запуска РНР-интерпретатора. Присоединяясь к рекомендации разработчиков, рекомендуем отключать эту опцию в реальных системах.

загрузка...

 

 

Естественно, что опция может устанавливаться только в файле php.ini – то есть до запуска самого ядра РНР.

log_errors = [Off/On] – позволяет включить запись всех ошибочных сообщений в лог-файл. Последующие директивы конкретизируют особенности работы механизма лога, например путь к файлу, размер лог-файла и другие параметры. Если вы разрабатываете серьезное приложение, особенно в первый период реальной работы, ведение лога и его регулярный просмотр могут стать отличным источником сообщений про недоработки, в то же время пользователям (и, возможно, взломщикам) не будет раскрываться какая-либо информация о внутренней архитектуре приложения.

error_log = [none/путь к лог-файлу] – задает путь к лог-файлу, в который будут записываться сообщения про ошибки и другая отладочная информация. Файл должен располагаться на сервере (не на удаленном компьютере) и быть доступным для записи.

arg_separator.output = ["&"/"другой символ или набор"] – позволяет задать набор символов-разделителей, которые используются в кодировке НТТР-запросов. К примеру, стандартно разделителем переменных является символ амперсанда (&). Можно задать набор из нескольких разделителей, при этом РНР рассматривает каждый из них как вероятный разделитель – если не удалось использовать первый заданный символ, РНР попробует другие. Разделители задаются в виде их кодов.

arg_separator.input = [";&"/"другой символ или набор"] – аналогично предыдущей опции указывает на символ-разграничитель полей при генерации ссылок средствами РНР.

variables_order = ["EGPCS"] – указывает РНР, где и в каком порядке искать переменные. Буквы обозначают место, где РНР ищет соответствующую переменную – E (переменные окружения), G (содержимое GET-запроса), Р (содержимое POST-запроса), С (переменные Cookie) и S (системные переменные). Поиск происходит в порядке слева направо и в таком же приоритете. То есть при налии переменных с одинаковыми именами РНР возьмет ту, которая встретится первой, – в данном случае переменная окружения (E) будет иметь более высокий приоритет, чем переменная, переданная в HTTP-запросе.

register_globals = [On/Off] – разрешает автоматически представлять все переменные, переданные в HTTP-запросе GET/POST, как обычные глобальные переменные, для обращения к которым не требуется явно указывать, к примеру $HTTP_POST_VARS[] или $_REQUEST[]. В принципе это существенно облегчает программирование, но многие авторы рекомендуют по соображениям безопасности отключать эту директиву и самостоятельно проводить обработку всех данных, поступающих в программу.

post_max_size = [8M/любое целое число M/K] – задает максимальный размер данных, передаваемых через POST-запрос. Эту директиву можно установить только через файлы php.ini и httpd.conf.

magic_quotes_gpc = [On/Off] – активизирует автоматическую обработку символов кавычек. Поскольку эти символы используются в качестве одной из конструкций языка и являются служебными, то РНР может автоматически замещать их на специальную последовательность \' для безопасной обработки. Эта директива применяется для обработки пользовательских данных, полученных через GET/POST/Cookie.

magic_quotes_runtime = [Off/On] – аналогична предыдущей директиве, с тем отличием, что ее действие распространяется на переменные, полученные в результате работы скрипта, например данные от базы данных. По умолчанию директива отключена, и программист должен сам обрабатывать свои данные.

default_mimetype = ["text/html"/допустимый MIME-type] – по умолчанию РНР-скрипт отдает пользователю информацию в виде обычного текста (соответствующий MIME-тип этих данных – text/html). Но если вы пишете специфическую программу, то может потребоваться изменить это значение на нужный вам тип данных. Или, если необходимо указать, что скрипт вернет другие данные, к примеру поток двоичных данных или аудиопоток, эту переменную можно изменить через функцию ini_set().

default_charset = ["iso-8859-1"/допустимая кодировка] – изначально эта директива отключена. Через нее задается кодировка, в которой РНР-скрипт отсылает данные пользователю.

file_uploads = [On/Off] – разрешает принимать файлы от пользователей, переданные через HTML-формы.

upload_tmp_dir =[none/путь к директории] – если прием файлов разрешен, то РНР автоматически обрабатывает их и сохраняет во временной директории. Если директива upload_tmp_dir не задана (а изначально она отключена), то РНР использует системную временную директорию для хранения загружаемых файлов. В скрипте необходимо вручную обрабатывать такие файлы, к примеру через функцию move_uploaded_file().

upload_max_filesize = [2M/целое число M/K] – задает максимальный размер файла, который разрешается передать в скрипт. Кстати, поскольку файл передается в теле POST-запроса, то на его размер влияет и другая директива, post_max_size, поэтому желательно, чтобы допустимый размер файла был меньше общего размера POST-данных. Например, если вы хотите разрешить загрузку нескольких файлов одновременно, то необходимо, чтобы суммарный их обьем был меньше, чем post_max_size, а размер каждого в отдельности не превышал upload_max_filesize.

allow_url_fopen = [On/Off] – разрешает применять обычные функции для работы с файлами при взаимодействии с удаленными узлами. Это позволяет получить тело страницы, просто открыв ее как обычный файл, указав вместо пути полный URL-адрес. Хотя, если честно, предпочтительней использовать для этого соединение через сокеты – у вас будет больше контроля и возможностей при работе с удаленными узлами. Есть еще две директивы, по умолчанию отключенные, from и user_agent, которые задают параметры для доступа (поле from может содержать e-mail пользователя), а через user_agent можно «замаскироваться» под браузер или же честно указать, что это РНР-скрипт (user_agent = «PHP»).

default_socket_timeout = [60/целое число] – задает время ожидания данных из сокета до разрыва соединения.

include_path = [".;/usr/local/php5/PEAR"] – содержит набор путей для поиска модулей и классов РНР. Если вы используете расширение РЕАR, то укажите путь к каталогу через точку с запятой. Первым по умолчанию указан текущий каталог скрипта. Директива может устанавливаться и программно, но желательно сначала получить ее текущее значение – функция ini_get('include_path') – и просто добавить нужный каталог в список через вызов ini_set().

extension_dir = ["/usr/local/php5/ext"] – задает путь до каталога с модулями расширения. В старых версиях РНР этот каталог носил название extensions, в новых он сократился до простого ext, хотя вы можете располагать модули в любом каталоге. В РНР для платформы win32 расширения – это обычные библиотеки DLL, для платформ Linux/Unix – файлы с расширением *.so.

enable_dl = [On/Off] – разрешает загрузку и использование динамических модулей.

extension = [php_curl.dll/файл модуля] – этой директивой указывается, какой модуль РНР может загружать. Это единственная из всех директив, которая может использоваться несколько раз. При каждом вызове она должна содержать имя файла (вместе с расширением), который содержит необходимый модуль. Обратите внимание, что задаются только имена файлов, а директория, где РНР ищет их, определяется директивой extension_dir. Традиционно все модули имеют название, состоящее из префикса php_ и названия модуля. Например, имя модуля mcrypt, который позволяет использовать функции криптографии в скриптах, будет иметь вид php_mcrypt.dll (на win32) или php_mcrypt.so (на Linux/Unix).

Для загрузки одновременно нескольких модулей просто укажите загрузку каждого модуля в отдельной строке:

extension=php_gd2.dll
;extension=php_mbstring.dll
extension=php_mcrypt.dll

В этом примере сначала загружается модуль GD (библиотека для работы с графикой), потом РНР определяет, что директива загрузки модуля mbsring закомментирована (отключена), и переходит к загрузке следующего модуля – mcrypt.

РНР начинает работу с модулями еще на этапе инициализации, проверяя доступность всех подлежащих загрузке файлов, поэтому все директивы, относящиеся к модулям, могут быть установлены только через файлы http.conf и php.ini. Если какой-либо модуль не найден, то РНР сгенерирует ошибку, но продолжит работу, так как модули не влияют на основную функциональность. Рекомендуется без необходимости не подключать лишние расширения – в некоторых случаях это может лишь замедлить работу и повлиять на общую безопасноть сервера.

И в заключение еще несколько директив, связанных с безопасностью.

expose_php = [On/Off] – со стороны может показатся, что это невинная опция, разрешающая РНР выводить информацию о своей версии в строке HTTP-ответа сервера. Разработчики советовали оставлять ее включенной, так как это может способствовать распространению РНР, ведь на основе анализа ответов серверов собирается, к примеру, мировая статистика использования РНР. Но в то же время это дает бесценную информацию для потенциального взломщика – ведь, имея точную информацию о версии и номере ПО, установленном на сервере, гораздо легче подобрать метод взлома. Поэтому можно рекомендовать отключать эту директиву на рабочих серверах, особенно если вы используете серьезные приложения на стороне сервера.

doc_root = [none/путь к каталогу] – может задавать каталог, в котором размещаются PHP-скрипты. Эта директива разрешает исполнение скриптов только в указанном каталоге и его поддиректориях, запрещая исполнение всех других сценариев. Если вы строите максимально защищенную веб-систему, то вам очень пригодится использование возможностей этой директивы. По умолчанию она отключена.

Вот мы и рассмотрели некоторые основные директивы из общей секции файла конфигурации php.ini. Некоторые модули используют свои собственнеы секции для хранения конфигурации, и мы рассмотрим их в следующих статьях.

Ссылки по теме




Статья получена: hostinfo.ru
загрузка...

 

 

Наверх


Постоянная ссылка на статью "PHP: секреты файла php.ini. Часть 2":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

PHP: секреты файла php.ini

Если спросить веб-программиста, какой из всех файлов дистрибутива PHP является самым главным, многие могут ответить, что сам интерпретатор, библиотеки, расширения и т. д. Нет, самый важный файл — это php.ini: небольшой текстовый файлик, в котором содержатся все настройки РНР (директивы), конфигурации модулей расширения и переменные среды. Через файл конфигурации можно настроить РНР на максимальное быстродействие, отключить потенциально опасные функции и модули, ну и, ...

» Интересное в сети - 3140 - читать


PHP: секреты файла php.ini. Часть 3

В предыдущей статье цикла мы начали рассматривать системные переменные или директивы РНР, которые устанавливаются через файл php.ini и позволяют тонко настроить среду исполнения РНР. Мы уже рассмотрели общие директивы РНР, теперь же перейдем к настройке отдельных модулей и расширений, которые поставляются вместе с дистрибутивом. Мы будем рассматривать конфигурацию РНР версии 5.

» Интересное в сети - 1880 - читать


PHP: секреты файла php.ini. Часть 4

В предыдущих статьях цикла мы начали рассматривать системные переменные или директивы РНР, которые устанавливаются через файл php.ini и позволяют тонко настроить среду исполнения РНР. Большинство модулей и расширений, как поставляемых в стандартном дистрибутиве, так и в виде дополнительного набора PECL, используют файл php.ini для хранения своих конфигураций. Вместе с тем этот файл универсальный, то есть он изначально включает все директивы для большинства модулей, даже есл ...

» Интересное в сети - 1792 - читать


Секреты PHP-функций для работы с&nb p;массивами. Обработка данных и&nb p;сортировка

Итак, что же там с вашим менеджером, который был упомянут в анонсе статьи? Вы уже написали ту самую злополучную версию функции для перекодировки какого-то поля в XML-файле. Но вечером того же дня оказывается, что надо срочно поменять логику работы скрипта, который уже закачан на сервер, протестирован вашим инженерным составом и одобрен чуть ли не самим генеральным директором фирмы.

» Интересное в сети - 2176 - читать


Секреты PHP-функций для работы с&nb p;массивами. Создание массивов

Основное назначение массивов — быстрая обработка данных. Часто разработчики программного обеспечения выполняют с их помощью сортирование информации, манипулирование исходными данными и получение различных выборок из наборов данных. Бытует мнение, что функциональность массивов гораздо проще организовать с помощью применения «толстой» прослойки SQL-кода и обращения к внешним приложениям типа специализированных хранилищ данных.

» Интересное в сети - 2067 - читать



Статья на тему Интернет » Интересное в сети » PHP: секреты файла php.ini. Часть 2

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru