Режимы работы php

Материал из ISPWiki
Перейти к: навигация, поиск

Все настройки php берутся из файлов php.ini. Работа панели с этими файлами описана в соответствующей статье.

Если в качестве web-сервера используется Apache

модуль Apache

Скрипты обрабатываются, фактически, самим apache, поэтому он должен быть собран с mod_php. В этом режиме для работы php в VirtualHost в конфигурационном файле apache прописываются директивы:

  php_admin_value sendmail_path
  php_admin_value upload_tmp_dir
  php_admin_value session.save_path
  php_admin_value open_basedir

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

CGI

В VirtualHost в этом случае прописываются параметры

  ScriptAlias /php-bin/ /user_homedir/data/php-bin/
  AddHandler application/x-httpd-php5 .php .php3 .php4 .php5 .phtml
  Action application/x-httpd-php5 /php-bin/php

Используется пользовательский php.ini (он лежит в ~data/php-bin/php.ini). Настройки может указать пользователь в модуле "настройки PHP". Настройки, которые пользователь не менял принимают значения по умолчанию, заданные в самом php.

FastCGI

Для работы этого режима необходимо, чтобы на сервере стоял Apache Prefork, а не Apache ITK. Все остальное идентично работе в режиме php как CGI.


Если в качестве web-сервера используется связка Nginx+Apache

В этом случае доступны все те же режимы, что и при использовании одного Apache. Nginx при этом отдает статику, а скрипты обрабываются Apache'ем точно так же. Кроме того, доступен еще один дополнительный режим

FastCGI (Nginx+PHP-FPM)

В этом режиме обработка скриптов лежит не на Apache, а на PHP-FPM. Если все сайты у вас работают в этом режиме, Apache вообще не запускается и не конфигурируется. В секцию server в конфигурационные файлы nginx прописывается дополнительный location:

  location @php {
          fastcgi_index index.php;
          fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f e-mail_администратора";
          fastcgi_pass unix:/var/www/php-fpm/username.sock;
          fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
          try_files $uri =404;
          include fastcgi_params;
  }


Настройки php берутся, как и в режиме CGI, из пользовательского php.ini