Гаджеты

Установка Apache, PHP, MySQL. Установка PHP

Установка Apache, PHP, MySQL. Установка PHP

От автора: один знакомый (еще тот «кривых дел мастер») решил самостоятельно собрать шкаф. В результате после нескольких часов мучений у него получился только стол. Вот такая метаморфоза случилась. Чтобы не оказаться в подобной ситуации, рассмотрим, как установить PHP правильно.

Без чего не будет работать PHP

– не обычный язык, а серверный. Из-за этого простой установки интерпретатора языка будет мало. Чтобы вы смогли выполнять код на своем персональном компьютере, понадобится локальный сервер.

Подобного добра во всемирной паутине хватает. Перечислением достоинств и недостатков каждого из серверов мы заниматься не будем. Вместо этого опишем процесс установки проверенного временем варианта — Apache , который уже давно ассоциируется у всех с разработкой на PHP.

История данного продукта подробно описана в Википедии. Так как надежность Apache подтверждена многими годами «безжалостного» использования, то не будет на доказательство это растрачивать свое драгоценное время. Попытаемся самостоятельно установить PHP сервер на ПК под Винду.

Устанавливаем «индейца»

Рассмотрим поэтапную установку сервера из индейского племени Apache:

Заходим на Apache.org, в меню справа жмем на «Download». После этого в предоставленном списке зеркал выбираем любое и скачиваем инсталяху с расширением.msi (родной формат под Windows) и версией не ниже 2.2

Поскольку проект является open source, то сейчас «развелось» множество сборок этого сервера. Если не можете найти указанную, перейдите по этому адресу . Здесь на зеркале доступны для скачивания родные версии Apache.

После загрузки запускаем инсталляционный пакет на выполнение. Процедура установки стандартная: соглашаемся с условиями использования, указываем имя домена и сервера, «мыло» администратора. Затем «Next».

Указываем директорию, куда следует установить PHP сервер Apache.

И ждем, пока пройдет процесс инсталляции ПО. Переходим в директорию, куда установили Apache. В папке конфигураций находим httpd.conf и открываем его. Находим строчку «Deny from all» и комментируем эту директиву. Таким образом мы снимаем встроенную защиту сервера, которая не нужна для локального использования Apache. То есть открываем доступ ко всем папкам, в том числе и к виртуальным. Если этого не сделать, то программа при попытке доступа к любой из директорий выдаст «403» ошибку.

Сохраните все изменения и перезапустите сервер.

Переходим к PHP

Заходим на php.net и скачиваем одну из «86» версий дистрибутива (лучше защищенную). Затем распаковываем ее в отдельной папке на том же диске, где и сервер. Я не буду полностью описывать все параметры языка, которые можно изменить. Более подробно об этом можно прочитать в сопутствующей технической документации.

Хотелось бы отметить, что все настройки PHP задаются в файле php.ini. Он открывается с помощью любого редактора (в том числе и Блокнотом). Приведу описание нескольких часто используемых параметров, которые задаются через этот файл:

post_max_size – устанавливает максимальный объем данных, которые можно за раз обработать с помощью метода POST.

upload_max_filesize – максимальный размер файлов, которые можно загрузить.

default_charset – с помощью данного параметра можно в PHP установить по умолчанию кодировку utf 8.

Теперь для полного счастья осталось прописать несколько строк в httpd.conf. С их помощью мы подключим PHP к локальному серверу, чтобы он работал в качестве модуля Apache. Этого вполне хватает для написания и тестирования кода в «домашних» условиях. Указанные строки следует разместить в середине файла:

LoadModule php5_module путь к инсталляции PHP/ php5apache2_2.dll – подключает библиотеку, с помощью которой дистрибутив будет использоваться в качестве модуля.

PHPIniDir «путь к файлу php.ini/» (например, PHPIniDir «F:/php-5.3.5/») – понятно без слов.

AddType application/x-httpd-php phtml php – настраивает соответствие между файлами PHP и mime-типом (application/x-httpd-php).

Ну как? Настройка требует времени, внимания и умения. А вы никогда не задумывались, что легче всего уже собранный «шкаф». Хотя в нашем случае под шкафом подразумевается уже готовый пакет ПО, в который входят и PHP, и сервер, и СУБД. Понятно, что речь идет о Денвере. Благодаря ему никакой «шкаф» не сможет превратиться под «умелыми» руками спеца в какой-нибудь «стол» или «тумбочку» .

Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом" . Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер .

Если вы добросовестно изучите курс, то научитесь:

  • управлять доступом к системе, сайтами, пользователями, группами пользователей;
  • работать с инструментами системы;
  • использовать возможности интерфейса по управлению системой;
  • работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
  • выполнять работу по конфигурированию веб-системы для оптимальной работы.

Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".

Вам не обойтись.

Необходимый минимум знаний для изучения курса:

  • базовые навыки компьютерной грамотности и навыков работы с ОС Windows;
  • базовые знания о WWW и организации доступа к веб-серверу;
  • знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.

Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).

Экономите время и учитесь по дороге на работу или в ВУЗ? Используйте файл формата CHM, они открываются на любых устройствах. Программы для чтения доступны в AppStore и Play Market. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

На PHP написано много хороших приложений. Даже нет,
очень много и некоторые из них очень хорошие, так почему бы не использовать эти
приложения на Windows? Особенно, если внутренний портал работает на Windows, а
на Unix машине крутиться внешний сайт компании - тогда
можно сэкономить на инфраструктуре и разместить на Windows
сервере еще и внешний сайт. Либо, если есть желание стандартизировать
инфраструктуру и размещать сайты на Windows
платформе, поскольку разработчики и пользователи работают на
Windows платформе.
На сайте www.iis.net
можно найти
список
популярных PHP приложений
с инструкциями по установке на IIS. Для их запуска
на IIS не требуется изменения
PHP кода.

Установка и настройка PHP для использования с модулем FastCGI.

Для начала, чтобы успешно использовать PHP на
Windows, неплохо было бы PHP
установить.
Шаг 1. Скачать PHP
На сайте PHP.net нужно скачать
последную версию PHP для Windows . Для использования с FastCGI рекомендуется
устанавливать версию PHP без контроля безопасности потоков, поскольку сам модуль
FastCGI гарантирует, что выполнение происходит в одном потоке и поддержка
контроля безопасности потоков в самом PHP привносит лишние проверки и
блокировки, приводящие к значительному падению производительности. Поэтому
выбираем Non-thread-safe Win32 binaries (версия 5.2.6 актуальна на момент написания
этого сообщения).
Стоит отметить, что веряим Non-thread-safe была разработана специально для
работы с FastCGI на IIS (первый релиз был в версии 5.2.1) и использовать в
других средах не рекомендуется. Кстати, начиная с версии 5.2.2 Zend серьезно
работает над оптимизацией производительности PHP под Windows, что не может не
радовать. Если сравнить версии 5.2.1 и 5.2.2, то разницу в скорости обработки
запросов можно легко увидеть с помощью простого нагрузочного теста.
Шаг 2. Установка PHP
Установка осуществляется совсем просто: поскольку мы скачали архив с
исполнимыми файлами, достаточно развернуть этот архив, например, в
директорию C:\Web\PHP.
В качестве базовой конфигурации воспользуемся рекомендованными установками:
cделаем копию файла php.ini-recommended в php.ini в этой же директории и откроем
его для редактирования, после чего пройдем файл сверху расскоментируя следующие
строки, дабы обеспечить безопасность и совместимость с большинством PHP
приложений:
  • open_basedir = директория, где размещены PHP приложения .
    Указание директории ограничит права доступа к файлам PHP приложений только
    этой директорией. Удобно переопределять эту настройку в файлах конфиграции
    непосредственно для каждого приложения, однако не помешает установить эту
    настройку и указать корневую директорию всех PHP приложений. Например, C:\inetpub\PhpSites.
  • cgi.force_redirect = 0
    По умолчанию установлено 1, но необходимо установить в 0, поскольку IIS
    контролирует безопасность выполнения PHP и в этой настройке нет
    необходимости. Более того, включение может привести к неожиданным
    результатам. При использовании с другими web-серверами на Windows эту
    настройку необходимо включить.
  • cgi.fix_pathinfo = 1
    PHP будет устанавливать имя файла в переменной SCRIPT_FILENAME, если
    установить значение 0, то имя файла будет в переменной PATH_TRANSLATED, что
    может нарушить совместимость с большинством приложений.
  • fastcgi.impersonate = 1;
    FastCGI позволяет процессу имперсонироваться используя контекст клиента,
    вызывающего процесс. Этот механизм работает только под FastCGI/IIS, например
    на Apache на Windows это работать не будет.
  • short_open_tag = On
    Большинство приложений используют короткие теги , поэтому будет не
    лишним включить их поддержку.
  • display_errors = On
    На время проверки и отладки PHP приложений на FastCGI стоит включить вывод
    сообщений об ошибках.
Шаг 3. Проверка работоспособности PHP
Пока мы не сконфигурировали IIS, проверить работоспособность интерпретатора
можно просто, например, выполнив команду c:\web\php\php.exe -info > c:\test.txt

Установка и настройка модуля FastCGI на IIS7.

Если у вас у IIS7, то что-то мне подсказывает о названии вашей операционной
системы - Windows Vista? Не угадал, тогда Windows Server 2008! Либо вы хакер и
поставили IIS7 еще-куда-то, но это нестандартное решение и мы его не
поддерживаем;).
Шаг 1. Установка FastCGI
Хочу обрадовать сразу - в IIS7, идущем с Windows Server 2008 и Windows Vista
Service Pack 1 модуль FastCGI уже включен. Его необходимо лишь подключить в
настройках. Для этого на Vista нужно открыть Control Panel -> Programs и выбрать
«Turn Windows Features On or Off»:

После этого необходимо установить фичу в IIS: Internet Information Services
-> World Wide Web Services -> Application Development Features -> CGI. При этом
будет установлена поддержка и CGI и FastCGI.

На Windows Server 2008 процесс аналогичен: Server Manager -> Roles -> Add
Role Services -> Web Server -> Application Development -> CGI.
Собственно все, что требуется для включения модуля FastCGI.
Шаг 2. Конфигурация IIS7
1. Открыть IIS Manager, выбрать узел (сервер) для которого нужно настроить
поддержку PHP. И далее выбрать Handler Mappings.

2. Выбираем на странице Handler Mappings ссылку Add Module Mapping и
заполняем окно следующими значениями:
Request path: *.php (обработка всех файлов с расширением.php)
Module: FastCgiModule (модуль FastCGI)
Executable: C:\Web\PHP\php-cgi.exe (путь к PHP)
Name: PHP (имя для удобства)

После добавления этой настройки появится окно с вопросом о регистрации
FastCGI приложения для этого обработчика. Подтверждаем.
Описанные выше действия привели к созданию в директории PhpSites следующего
web.config файла:


< configuration >
< system.webServer >
< handlers >
< add name =«PHP» path ="*.php" verb ="*"
modules =«FastCgiModule» scriptProcessor ="C:\Web\PHP\php-cgi.exe "
resourceType =«Unspecified» />



Теперь можно переходить к проверке работоспособности PHP.
Шаг 3. Проверяем корректность настройки
В директории узла для которого мы сконфигурировали PHP создаем файл
index.php:
phpinfo();
?>
И обращаемся к этому файлу через HTTP запрос. В результате, если все хорошо и
наша карма не испорчена, запрос будет корректно обработан:

Разумеется, при использовании PHP на
IIS7 могут возникать подводные камни, с которыми нужно
бороться, чтобы достичь ожидаемого результата (замечательной работы
PHP приложений на Windows).
Молотки для разбивания часто встречающихся камней приведены ниже.

Частота перезапуска процессов PHP

Поскольку при использовании PHP на
IIS7 с использованием FastCGI
модуля, сам модуль FastCGI берет на себя
управление процессами и ресурсами, необходимо убедится, что механизм перезапуска
процессов (recycling) в PHP
не будет мешать FastCGI. Это легко сделать, если
настроить FastCGI так, чтобы он всегда перезапускал
процессы раньше, чем это сделает PHP.
В настройках FastCGI существует настройка
instanceMaxRequests, определяющая после обработки какого количества запросов,
процесс будет перезапущен. В PHP аналогичный параметр
задается значением переменной PHP_FCGI_MAX_REQUESTS. Очевидно, чтобы дать
возможность FastCGI рулить процессом, достаточно
установить instanceMaxRequests <= PHP_FCGI_MAX_REQUEST.
Это удобно сделать, отредактировав файл
applicationHost.config (прячется в директории C:\windows\system32\inetsrv\config\).
В конфигурации должна быть следующая информация:

< fastCgi >
< application fullPath ="C:\inetpub\php\php-cgi.exe "
maxInstances =«4» instanceMaxRequests =«10000» >
< environmentVariables >
< environmentVariable name =«PHP_FCGI_MAX_REQUESTS» value =«10000» >


Использование нескольких версий PHP

Поскольку разные версии PHP могут использоваться в
приложениях, которые размещаются на сервере, то хорошо бы было дать возможность
использовать разные версии для разных сайтов.
В файле конфигурации applicationHost.config
достаточно определить секции для разных версий PHP:
< fastCgi >
< application fullPath =«C:\inetpub\php\php-cgi.exe» >
...

< application fullPath =«C:\inetpub\php4\php4.exe» >
...

< application fullPath =«C:\inetpub\php41\php41.exe» >
...


* This source code was highlighted with .
А уже для каждого из сайтов конфигурируется модуль, использующий ту или иную
версию (можно использовать интерфейс, который описан выше, а можно
отредактировать конфигурацию в тексте):
< handlers >
< add name =«PHP4» path ="*.php" verb ="*" modules =«FastCgiModule»
scriptProcessor ="C:\inetpub\php\php41.exe "
resourceType =«Unspecified» />

* This source code was highlighted with .

Использование разных наборов настроек PHP

Если есть желание настраивать PHP по-разному для
разных сайтов, то опять же все это можно описать через настройки конфигурации в
applicationHost.config.
< fastCgi >

< application fullPath ="C:\inetpub\php\php-cgi.exe "

arguments ="-d my.website=wordpress" >

< environmentVariables >

< environmentVariable name =«PHPRC» value =«C:\inetpub\wordpress» />





< application fullPath ="C:\inetpub\php\php-cgi.exe "

arguments ="-d my.website=phpsite" >

< environmentVariables >

< environmentVariable name =«PHPRC» value =«C:\inetpub\phpsite» />






* This source code was highlighted with .

После этого, настройки связываются с соответствующими сайтами в
web.config:
< system.webServer >

< handlers accessPolicy =«Read, Script» >
< add name =«PHP» path ="*.php" verb ="*" modules =«FastCgiModule»
scriptProcessor ="C:\inetpub\php\php-cgi.exe|-d my.website=wordpress "

resourceType =«Unspecified» requireAccess =«Script» />




* This source code was highlighted with .

В соответствии с приведенной конфигурацией, php.ini
нужно разместить в директории каждого из сайтов.
При редактировании настроек, стоит строго соблюдать совпадение путей к
соответствующей версии PHP и с
applicationHost.config и в web.config, чтобы
избежать неожиданных результатов, если пути будут перепутаны.
На первый взгляд редактирование конфигурации может показаться сложным и
неудобным процессом, но как только вы привыкните к конфигурации в
XML и распространению настроек методом
Ctrl+C, Ctrl+V, вы будете удивляться наличию других
способов конфигурации:)

Настройки безопасности PHP

В php.ini мноо разных настроек, многие из которых
влияют на безопасность использования PHP. Настроить
все подходящим образом, достойное дело.
Set allow_url_fopen=Off
; использование URL для операций с файлами
Set allow_url_include=Off
register_globals=Off
; отмена регистрации глобальных переменных
open_basedir=«c:\inetpub\» ;
ограничение на директорию, в которой работает PHP

Max_execution_time=30 ; ограничение
времени выполнения скриптов
max_input_time=60
memory_limit=16M ;
ограничение на размер используемой памяти
upload_max_filesize=2M
post_max_size=8M
max_input_nesting_levels=64
display_errors=Off
; отключение сообщений об ошибках
log_errors=On
error_log=«C:\error.log»
expose_php=Off
; скрыть присутствие PHP

Заключение

PHP на Windows - это не
просто интересно и удобно, главное, что это работает. А команда
IIS работает над тем, чтобы PHP
работал на Windows не хуже, чем на
Unix/Linux (конечно, стараются сделать лучше).
Поскольку это новая тема для Microsoft, то мы можем
сделать какие-то ошибки, можем чего-то не замечать и не понимать, поэтому нам
очень важно получать комментарии от вас - разработчиков и администраторов.
Пишите в комментариях ваши пожелания и проблемы, которые вы видите сейчас в
PHP на Windows, а мы будем
стараться проблемы решать, а пожелания реализовывать.

Теги: Добавить метки

Конфигурационный файл php.ini является основным инструментом настройки ядра PHP . Он считается каждый раз при инициализации PHP . Если изменение не отображается, не забудьте остановить и перезапустить httpd . Если внесенные изменения до сих пор действуют, используйте функцию phpinfo() , чтобы проверить, php ini где лежит.

Файл конфигурации хорошо прокомментирован и подробно проработан. Параметры чувствительны к регистру, значения ключевых слов – нет; пробелы и строки, начинающиеся с точки с запятой, игнорируются. Логические значения могут быть представлены как 1/0 , Yes/No , On/Off или True/False . Значения по умолчанию в php.ini повлияют на установку PHP , которую позже можно будет настроить.

В этой статье мы рассмотрим важные настройки в файле php.ini , которые могут потребоваться для PHP парсера.

short_open_tag = Off

Короткие открытые теги выглядят так: . Для этого параметра должно быть установлено значение Off , если вы хотите использовать функции обработки XML .

safe_mode = Off

Если этот параметр имеет значение ON , вероятно, вы скомпилировали PHP с флагом enable-safe-mode . Безопасный режим наиболее важен для использования CGI .

safe_mode_exec_dir =

Эта опция имеет значение только в том случае, если включен безопасный режим. Она также может быть установлена с флагом --with-exec-dir во время процесса сборки Unix . PHP в безопасном режиме выполняет внешние двоичные файлы только из этого каталога. По умолчанию используется каталог /usr/local/bin . Это не имеет ничего общего с обслуживанием обычной PHP/HTML веб-страницы.

safe_mode_allowed_env_vars =

Эта опция php ini задает, какие переменные окружения пользователи могут изменить в безопасном режиме. По умолчанию, только те переменные, к которым добавлено «PHP_ ». Если эта директива пуста, то большинство переменных можно изменять.

safe_mode_protected_env_vars =

Параметр устанавливает, какие переменные окружения пользователи не могут изменить в безопасном режиме, даже если опция safe_mode_allowed_env_vars включена.

disable_functions =

Довольно полезным дополнением в конфигурации PHP4 , которое сохранилось и в версии PHP5 , является возможность отключения выбранных функций по соображениям безопасности. Раньше это требовало ручной правки кода на языке C , на котором был написан интерпретатор PHP . Функции файловой системы, операционной системы и сети должны быть первыми в этом списке, потому что возможность записи файлов и изменения системы через HTTP не является безопасным.

max_execution_time = 30

При настройке php ini нужно знать, что функция set_time_limit() не будет работать в безопасном режиме. Поэтому это основной способ реализовать задержку выполнения скрипта в безопасном режиме. В Windows вы должны выполнить принудительное завершение, основываясь на максимальном уровне потребляемой памяти, а не на времени. Также можно использовать настройку таймаута Apache для реализации задержки. Но она будет применена и к файлам сайта, не являющимся PHP .

error_reporting = E_ALL & ~E_NOTICE

Значением по умолчанию является E_ALL & ~E_NOTICE , все ошибки кроме уведомлений. Для серверов должно быть установлено, как минимум, значение по умолчанию. И только на основных серверах можно использовать меньшее значение.

error_prepend_string = [""]

Вместе с » используется со строками, как при формировании значения поля формы.

variables_order = EGPCS

Заменяет gpc_order . Обе версии устарели вместе с register_globals . Он устанавливает порядок различных переменных: Environment , GET , POST , COOKIE и SERVER (или Built-in ). Вы можете изменить этот порядок. Переменные будут последовательно перезаписаны слева направо, при этом самый правый всегда «выигрывает ». Это означает, что если оставить значение по умолчанию и использовать одно имя для переменной среды, переменной POST и переменной COOKIE , то, в конце концов, имя будет принадлежать переменной COOKIE .

register_globals = Off

Этот параметр php ini set позволяет определить, нужно ли регистрировать переменные EGPCS как глобальные. В настоящее время этот способ устарел, и, начиная с PHP 4.2 , этот флаг по умолчанию установлен в значение Off . Вместо него используйте суперглобальные массивы.

gpc_order = GPC

Этот параметр устарел.

magic_quotes_gpc = On

Экранирует кавычки во входящих данных GET/POST/COOKIE . Если вы используете много форм, которые отправляют данные сами себе или другим формам, и отображают значения форм, нужно активировать эту директиву или использовать функции addslashes() для данных строкового типа.

magic_quotes_runtime = Off

Этот параметр экранирует кавычки во входящих строках базы данных и текстовых строках. Помните, что SQL добавляет слеш в одинарные кавычки и апострофы при сохранении строк и не убирает их при возвращении строк. Если этот параметр выключен, необходимо использовать функцию stripslashes() при выводе любых типов строковых данных из БД SQL . Если для magic_quotes_sybase установлено значение On , то этот параметр должен быть Off .

magic_quotes_sybase = Off

Экранирует одиночные кавычки во входящих строках базы данных и текстовых строках с одиночными кавычками в стиле Sybase , а не обратным слешем. Если для параметра magic_quotes_runtime установлено значение On , данный параметр должен быть отключен.

auto-prepend-file =

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

auto-append-file =

Если в этом параметре указан путь, PHP должен автоматически ввести конструкцию include() в конец каждого PHP-файла , кроме случаев, когда осуществляется выход с помощью функции exit () . Следует учитывать ограничения для путей включаемых файлов.

include_path =

Если установить это значение, вам будет разрешено включать или запрашивать файлы только из указанных каталогов. Каталог include обычно находится под корневым документом. Это необходимо, если вы работаете в безопасном режиме. Установите для параметра значение .in , чтобы включить файлы из каталога, в котором находится ваш скрипт. Несколько каталогов разделяются двоеточиями: .:/usr/local/apache/htdocs:/usr/local/lib .

doc_root =

При настройке php ini если вы используете Apache , то в файле httpd.conf корневой каталог документа для этого сервера или виртуального хоста уже задан. Установите это значение здесь, если используете безопасный режим или хотите разрешить PHP только для части сайта (например, только в одном подкаталоге ).

file_uploads =

Активируйте этот флаг, если загружаете файлы с помощью PHP-скрипта .

upload_tmp_dir =

Не удаляйте комментарии из этой строки, если не понимаете, что такое !

session.save-handler = files

За исключением редких случаев изменять этот параметр не нужно.

ignore_user_abort =

Определяет, что произойдет, если посетитель сайта нажмет в своем браузере кнопку «Остановить ». По умолчанию установлено значение On , которое означает, что скрипт продолжит работать до завершения или таймаута. Если изменить значение данного параметра на Off , скрипт будет прерван. Этот параметр работает только в режиме модуля, а не в CGI .

mysql.default_host = hostname

Хост-сервер по умолчанию, используемый при подключении к серверу базы данных, если не указан другой узел.

mysql.default_user = username

Этот параметр php ini задает имя пользователя по умолчанию, используемое при подключении к серверу базы данных, если другое имя не указано.

mysql.default_password = password

Пароль по умолчанию, используемый при подключении к серверу базы данных, если не указан другой пароль.

Перевод статьи «PHP 7 - PHP.INI File Configuration » был подготовлен дружной командой проекта Сайтостроение от А до Я.

php имеет множество настроек, описанных в файле php.ini. Этот файл должен быть доступен в системных путях поиска для того, чтобы php мог использовать эти настройки. Обычно для этого достаточно хранить этот файл в том же каталоге, где расположен сам php, но если php сконфигурирован для работы в качестве модуля web-сервера, то этот файл необходимо скопировать в каталог, явно доступный в системных путях поиска. См. раздел инсталляции php для получения более подробных инструкций.

Здесь рассматриваются основные параметры php, разделенные по категориям. Список параметров в основном соответствует версии php 4.0.6, однако здесь рассматриваются только основные параметры. Полный список параметров с комментариями по каждому из них можно увидеть непосредственно в php.ini, а также в соответствующем разделе php manual.

Значения параметров, имеющих варианты "да/нет" могут быть следующими:

ДА - 1, on, true or yes
НЕТ - 0, off, false or no

Short_open_tag

Включение поддержки сокращенного варианта php тегов. Если эта опция отключена, то php код будет распознаваться только внутри тегов. Если включена - то разрешено использование тегов. Хорошим тоном считается не использовать сокращенной записи php тегов.

Включение поддержки asp тегов <% %> в качестве php тегов.

Output_buffering

Включение буферизированного вывода php. Использование буферизированного вывода позволит вам, к примеру, использовать любые функции, оперирующие с http header"ами (header(), setcookie()) в любом месте вашего скрипта, не заботясь о том, чтобы не выводить ничего до этого. Вы можете управлять буферизированным выводом и из ваших скриптов (см. раздел output control functions в php manual). Помните, что при включенной буферизации вывода результат работы скрипта будет возвращен браузеру только после того, как будет закончена работа скрипта, что может привести к более медленной работе сайта.

Включение безопасного режима работы php. Безопасный режим запрещает скриптам производить любые действия, которые являются небезопасными для сервера, на котором работает php. Очень подробно безопасный режим работы php рассматривается в php manual.

Max_execution_time

Максимальное время работы php скрипта (в секундах). Спустя это время работа скрипта будет принудительно завершена и выдана соответствующая ошибка. Позволяет избежать проблем с "зациклившимися" скриптами.

Максимальный объем памяти, который может быть выделен для нужд скрипта. Также позволяет избежать проблем с "зациклившимися" скриптами.

Error_reporting

Маска для сообщений об ошибках, которые должны генерироваться php. Задается в виде логического выражения с использованием набора предопределенных констант, описывающих различные типы ошибок. Список этих констант, а также правила задания выражений можно найти в php.ini.

Display_errors

Определяет, нужно ли выводить сообщения об ошибках на экран. Обычно эта опция включается во время написания php скриптов, для того, чтобы иметь возможность видеть сообщения об ошибках, а на реальных серверах в интернете она обычно выключена по соображениям безопасности.

Если включена эта опция, то все ошибки будут записываться в log файл, определенный следующей опцией.

Путь и имя файла, куда будут записываться все сообщения об ошибках, генерируемых php. Для систем поддерживающих системный журнал ошибок можно установить значение этого параметра равным syslog, для того, чтобы перенаправить все сообщения об ошибках туда.

Если включена эта опция, то текст последней ошибки будет всегда доступен из переменной $php_errormsg.

Register_globals

Этот параметр определяет, будут ли т.н. egpcs переменные (environment, get, post, cookies, session) доступны в виде глобальных переменных php. Если этот параметр разрешен, то переменные доступ к этим переменным будет осуществляться также, как и к любым другим глобальным переменным php:


echo "Версия http протокола: " . $server_protocol ;
echo "Параметр query string: " . $param1 ;
echo "Элемент формы: " . $txtfirstname ;
echo "Мои cookie: " . $mycookie ;
echo . $mysessionvar ;

Или то же самое, но с отключенным параметром:


echo "Версия http протокола: " . $http_env_vars [ "server_protocol" ];
echo "Параметр query string: " . $http_get_vars [ "param1" ];
echo "Элемент формы: " . $http_post_vars [ "txtfirstname" ];
echo "Мои cookie: " . $http_cookie_vars [ "mycookie" ];
echo "Мои сессионные переменные: " . $http_session_vars [ "mysessionvar" ];

На первый взгляд это менее удобно, но отключение этого параметра имеет и свои преимущества:

Php начинает работать немного быстрее, т.к. не тратится дополнительное время на создание множества переменных.
Нет риска того, что какие-то две переменные будут иметь одинаковые имена, что приведет к появлению ошибок в работе скрипта, которые будет очень сложно отловить в силу их неочевидности.
variables_order

Этот параметр используется в связке с предыдущим параметром и определяет, в какой последовательности производится регистрация глобальных egpcs переменных. Например, при значении по умолчанию (egpcs) переменные, переданные через get будут замещены переменными, переданными через post и имеющими то же имя. post-переменные (а также environment и get переменные) в свою очередь могут быть замещены значениями cookies с такими же именами и т.д.

Magic_quotes_gpc

Включение этого параметра приведет к тому, что все данные, поступающие со стороны клиента (через get, post или cookie) будут обработаны: все кавычки (" и ") в них будут замещены соответственно сочетанием " или ". С одной стороны это очень удобно, если планируется, например, вставлять эти данные в строки, передаваемые, например, sql серверу. Но с другой стороны это может привести к путанице, поэтому обычно надежнее использовать для этой цели функции addslashes() и stripslashes().

Magic_quotes_runtime

Данный параметр аналогичен предыдущему за исключением того, что влияет на данные, поступающие из внешних источников, расположенных на стороне сервера (например, данные, поступающие от sql сервера или результаты работы внешних программ).

Magic_quotes_sybase

Включение этой опции приведет к тому, что одинарные кавычки (") будут сдваиваться (""). Это необходимо для некоторых sql серверов, которые поддерживают только такой способ вставки кавычек в строки (interbase, ms sql, sybase и некоторые другие).

Auto_prepend_file

Позволяет задать путь и имя файла, который будет автоматически добавляться в начало каждого php скрипта. Используется только если имеет непустое значение.

Auto_append_file

То же самое, что предыдущий параметр, но добавление содержимого файла производится в конец каждого php скрипта.

Путь к каталогу, где лежат модули php. Обычно это подкаталог extensions в корневом каталоге php.