PHP configuration/ru

PHP — система сетевых шаблонов, которая выросла, в общем-то, в полноценный язык программирования. Синтаксис, возможности и модель выполнения PHP имеет общие черты с Perl; скрипты загружаются "интерпретатором", компилируются в байткод и затем выполняются. Интерпретатор PHP может быть запущен из командной строки, как модуль CGI, но как правило используется внутри-процессный модуль Apache.

Установка
Пожалуйста, посмотрите http://www.php.net/manual/en/installation.php.

Необходимое
Следующие расширения необходимы для MediaWiki:
 * Perl Compatible Regular Expressions
 * Session
 * Standard PHP Library
 * Хотя бы один драйвер СУБД:
 * MySQL
 * PostgreSQL
 * SQLite (through PDO)
 * MySQLi, MySQL и PostgreSQL через PDO не поддерживаются

Perl Compatible Regular Expressions, Session и Standard PHP Library подключены по умолчанию; Perl Compatible Regular Expressions и Standard PHP Library не могут быть отключены с версии PHP 5.3.

Дополнительное
Для MediaWiki необходимы или желательны некоторые опции PHP, подключение которых выполняется при компиляции :
 * mbstring — поддержка строк из многобайтовых символов (желательно; при недоступности будет использован более медленный собственный код)
 * iconv — библиотека конвертации штрифтов (желательно; при недоступности будут использованы другие функции конвертации)
 * zlib — библиотека сжатия, желательна для сжатия файлового кеша
 * sockets — поддержка сетевой коммуникации при использовании memcached
 * dba — слой абстракции базы данных в стиле DBM, для кэширования, с следующими обработчиками:
 * CDB для кэша интервик (и возможно других вещей)
 * Berkeley DB3, если вы хотите использовать CACHE_DBA в $wgMainCacheType, $wgParserCacheType или $wgMessageCacheType

Пример
Для работы вполне хватает таких параметров компилятора:

'./configure' \ '--with-mysql' \ '--without-sqlite' \ '--with-apxs2=/usr/sbin/apxs2' \ '--with-zlib' \ '--with-ldap' \ '--with-gd' \ '--with-jpeg-dir' \ '--with-iconv-dir' \ '--enable-mbstring'

Давайте рассмотрим, что делают эти параметры.


 * --with-mysql : Позволяет PHP отправлять запросы в MySQL. Это существенная функция. Должен быть установлен MySQL, для включения этой опции.
 * --without-sqlite : Это опция просто сокращает построение путем удаления ненужных компонентов PHP. Не существенна, но у постройки будет меньше шансов на ошибку из-за отсутствия зависимостей и должна привести к меньшему размеру установки PHP.
 * --with-apxs2=/usr/sbin/apxs2 : Обязательно, если вы хотите собрать mod_php. APXS предназначен для настройки компиляции модуля Apache. Вам необходимо будет изменить значение (или не указывать путь) для конкретной системы.
 * --with-zlib : Позволяет PHP читать/записывать сжатые файлы и отправлять сжатые данные в Apache.
 * --with-ldap : Важно, если вы хотите, чтобы пользователи проходили проверку через LDAP.
 * --with-gd : Используйте, если вы хотите обрабатывать изображения "внутри" PHP, иначе можете использовать ImageMagick.
 * --with-jpeg-dir : Возможно, необязателен.
 * --with-iconv-dir : Возможно, необязателен.
 * --enable-mbstring : Включает поддержку мультибайтовых символов. Не обязательно; при недоступности будет использован более медленный собственный код.

Кэширование опкода
При работе на сайтах с большим объёмом проходящего трафика, настоятельно рекомендуется, чтобы система использовала скомплированные скрипты для кэширования; есть целый ряд подобных плагинов для PHP, некоторые бесплатные, некоторые проприетарны. Некоторые из систем кэширование:
 * Alternative PHP Cache
 * Turck MMcache
 * ionCube PHP Accelerator

К счастью, их также легко устанавливать, как плагины Zend, просто закидываем их библиотеки и изменяем php.ini. Никакой траты времени на полную перекомпиляцию всего PHP!

В зависимости от кэша и параметров, вы можете выполнять специальные операции при обновлении файлов скрипта.

MediaWiki также может взаимодействовать с кэшами и использовать их для кэширования объектов, см. Manual:$wgMainCacheType.

Конфигурация среды выполнения (php.ini)
Некоторые настройки, определённые в php.ini влияют на поведение MediaWiki, но некоторые из них попросту не совместимы с MediaWiki.


 * register_globals
 * Включение этой настройки очень рискованно и может быть использован для XSS-атак; Для MediaWiki он необязателен, так что если можете, отключите настройку!


 * safe_mode
 * Safe mode является непродуманной, неоформленной настройкой в PHP; MediaWiki может работать с этой опцией, однако некоторые функции будут недоступны.


 * magic_quotes_gpc
 * Эта опция добавляет кавычки к данным в,   и  . MediaWiki может работать с этой опцией, однако работа будет замедленной, в связи с удалением кавычек самим MediaWiki.


 * magic_quotes_runtime
 * Эта опция непредсказуемо портит вводные данные, добавляя кавычки, например, в открытые файлы, в данные, полученные из базы данных и так далее. MediaWiki не сможет установиться, если эта опция будет включена.


 * magic_quotes_sybase
 * аналогично magic_quotes_runtime


 * mbstring.func_overload
 * Эта опция приводит к ошибкам и может привести к непредсказуемому повреждению данных; MediaWiki не сможет установиться, если эта опция будет включена.


 * zend.ze1_compatibility_mode
 * Эта опция приводит к ужасным ошибкам; MediaWiki не сможет установиться, если эта опция будет включена.


 * memory_limit
 * MediaWiki необходимо достаточно много памяти для работы. Как минимум необходимо 20 Мб, однако если вы хотите чтобы MediaWiki работал корректно, рассмотрите возможность использования не менее 50 Мб.

Изменение размера изображений
ImageMagick может быть использован для изменения размера изображений (см. Manual:Configuration settings/ru). Если он не доступен, вместо него используется модуль PHP GD.

См. также

 * PHP Knowledgebase
 * PHP Tutorials
 * PHP request in MediaWiki development