PHP

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page PHP and the translation is 100% complete.

Other languages:
English • ‎italiano • ‎日本語 • ‎polski • ‎русский
Resources

PHP — это скриптовый язык общего назначения, предназначенный для создания на стороне сервера динамических веб-страниц.

Установка

USE-флаги

Существует глобальный USE-флаг php для включения поддержки PHP в других пакетах. Включение этого USE-флага автоматически установит пакет dev-lang/php после обновления глубоких зависимостей в наборе @world. Сначала установите глобальный USE-флаг в /etc/portage/make.conf:

Файл /etc/portage/make.confОбъявление php в качестве глобального USE-флага
USE="php"

Наиболее важные USE-флаги пакета PHP, USE-флаги SAPI (Server API), это apache2, cgi и fpm. Помимо этих USE-флагов, существует множество других USE-флагов, предназначенных для включения различных возможностей интерпретатора PHP:

Cannot load package information. Is the atom dev-lang/php correct?

По умолчанию ebuild устанавливает development версию php.ini. Для того, чтобы установить production версию, у которой более строгие настройки безопасности, но с помощью которой может быть сложнее отлаживать приложения, добавьте следующее в файл make.conf:

Файл /etc/portage/make.confУстановка production версии файла php.ini
PHP_INI_VERSION="production"

Обе версии php.ini можно найти в /usr/share/doc/php-*.

После изменения предпочтительной версии php.ini следует переустановить PHP с помощью команды, приведенной ниже, в разделе Emerge.

Расширения

Чтобы установить расширения, прежде всего определите, для каких версий PHP их следует скомпилировать. Это реализуется посредством установки переменной PHP_TARGETS:

Файл /etc/portage/make.conf
PHP_TARGETS="php5-6"

Можно указать более одной версии; просто добавьте дополнительные версии, разделенные пробелами. Обратите внимание, что слот php называется "5.6", а соответствующее значение PHP_TARGETSphp5-6. Причина этого — в текущих ограничениях имен USE.

Emerge

После настройки USE-флагов, как показано выше, необходимо обновить систему, чтобы изменения вступили в силу:

root #emerge --ask --update --changed-use --deep @world

Запуск нескольких версий PHP

Одно из больших преимуществ использования Gentoo для разработки PHP — слотирование версий. Переключаться между несколькими версиями PHP очень просто, также как одновременно запускать несколько версий. Все это осуществляется с помощью команды eselect, предоставляемой пакетом app-eselect/eselect-php, который должен автоматически устанавливаться при установке PHP. Например, выбор нескольких версий PHP позволяет системе использовать PHP 7.0 для cli SAPI и PHP 5.6 для веб-сервера. Это также позволяет быстро протестировать приложение на разных версиях PHP.

Чтобы вывести доступные версии для cli SAPI, используйте команду:

root #eselect php list cli
 [1]   php5.5 
 [2]   php5.6 *   
 [3]   php7.0

Версия, отмеченная символом *, является текущей активной версией. Чтобы посмотреть другие SAPI, замените cli на fpm, cgi или apache2.

Чтобы переключить версию:

root #eselect php set cli 3

Номер 3 в этом примере соответствует номеру из вывода суб-команды list, приведенной выше. PHP версии 7.0 теперь используется для командной строки:

root #php -v
PHP 7.0.10-pl0-gentoo (cli) (built: Aug 23 2016 12:38:44) ( NTS )

Конфигурация

Конфигурация PHP находится в каталоге /etc/php, который содержит один подкаталог для каждого SAPI и для каждой версии PHP. Например, конфигурационные файлы для PHP-5.6 apache2 SAPI устанавливаются в /etc/php/apache2-php5.6.

Веб-серверы

Чтобы использовать PHP на стороне сервера, веб-сервер должен быть установлен и настроен для использования PHP. Далее кратко рассматривается несколько популярных веб-серверов.

Nginx

Просто скомпилируйте nginx, чтобы установить его:

root #emerge --ask www-servers/nginx
Важно
Если пользовательские установки NGINX_MODULES_HTTP установлены в make.conf, убедитесь, что модуль fastcgi включен.

После установки Nginx измените раздел server в /etc/nginx/nginx.conf примерно таким образом:

Файл /etc/nginx/nginx.confЧасть конфигурации nginx, в которой настраивается работа PHP через FastCGI
server {
                listen 127.0.0.1;
                server_name localhost;
 
                access_log /var/log/nginx/localhost.access_log main;
                error_log /var/log/nginx/localhost.error_log info;
 
                root /var/www/localhost/htdocs;
 
                location ~ .php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        include fastcgi.conf;
                }
        }

Теперь запустите соответствующие сервисы, чтобы получить рабочий сайт. Init-скрипт php-fpm запускает PHP FastCGI Process Manager. FastCGI позволяет веб-серверам передавать вычисления PHP этому менеджеру процессов.

root #service nginx start
root #service php-fpm start

lighttpd

Предупреждение
Не включайте USE-флаг php для www-servers/lighttpd. Это может сломать сборку.

Убедитесь в том, что lighttpd собран с поддержкой fastcgi и USE-флаг php выключен:

Файл /etc/portage/package.use
www-servers/lighttpd fastcgi -php

Lighttpd устанавливает конфигурационный файл FastCGI по умолчанию, но, к сожалению, он работает только со старым PHP FCGI SAPI, а не с общей установкой FCGI. Поскольку USE-флаг php был выключен, этот файл не будет установлен. Тем не менее, он является хорошей основой для конфигурационного файла, который можно использовать с FPM.

Отредактируйте /etc/lighttpd/mod_fastcgi.conf:

Файл /etc/lighttpd/mod_fastcgi.confВключение FastCGI в lighttpd
server.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
  ( "localhost" =>
    (
      "host" => "127.0.0.1",
      "port" => "9000"
    )
  )
)

Обратите внимание на строки host и port.

Поскольку в Gentoo входит рабочий файл php-fpm.ini, который находятся в /etc/php/fpm-php5/php-fpm.ini, и init-скрипт, это все, что требуется, чтобы запустить сервисы:

root #/etc/init.d/php-fpm start
root #/etc/init.d/lighttpd start

Apache (mod_php)

Чтобы Apache загружал модуль PHP5 (mod_php), добавьте -D PHP в переменную APACHE2_OPTS в /etc/conf.d/apache2. Возможно, пользователи помнят, что раньше было необходимо также добавлять версию PHP (например, -D PHP5). Однако начиная с app-eselect/eselect-php версии 0.8.1 переменная была изменена на -D PHP, чтобы упростить интеграцию будущих крупных версий.

Файл /etc/conf.d/apache2Настройка Apache для загрузки mod_php
## (settings for PHP5 and above)
APACHE2_OPTS="-D PHP"

Убедитесь в том, что PHP собран с USE-флагом apache2.

Если по какой-либо причине в системе отсутствует файл интеграции модуля PHP /etc/apache2/modules.d/70_mod_php.conf, в настоящее время предоставляемый пакетом app-eselect/eselect-php, если он установлен с USE-флагом apache2, добавьте его вручную. Ниже показано его текущее содержимое.

Файл /etc/apache2/modules.d/70_mod_php.conf
<IfDefine PHP>
	# The mod_php.so symlink is controlled by
	# eselect-php. However, the module name changed from
	# php5_module to php7_module so we can't blindly load whatever
	# is there. Instead we let eselect-php manage a small
	# configuration file that loads the appropriate module.
	#
	# This is relative to ServerRoot (see httpd.conf).
	Include ../../../var/lib/eselect-php/mod_php.conf
 
	# Tell apache that mod_php should handle PHP files.
	#
	# NOTE: Avoiding AddHandler/AddType for security (bug
	# #538822). Please read the related news item!
	<FilesMatch "\.(php|php[57]|phtml)$">
		SetHandler application/x-httpd-php
	</FilesMatch>
 
	# PHP source files which are meant to be displayed as
	# syntax-highlighted source code.
	<FilesMatch "\.phps$">
		SetHandler application/x-httpd-php-source
	</FilesMatch>
 
	DirectoryIndex index.php index.phtml
</IfDefine>

Хотя в системе может быть установлено несколько версий PHP, Apache может использовать только одну версию PHP. Команда eselect php используется для переключения активных версий PHP.

Смотрите также