Что такое mod php?


Проходя через учебник по Zend, я наткнулся на следующее утверждение:

Обратите внимание, что настройки php_flag в .htaccess работают только в том случае, если вы используете mod_php.

Может кто-нибудь объяснить, что это значит?

 88
Author: TRiG, 2010-04-26

5 answers

mod_php означает PHP, как модуль Apache.

В принципе, при загрузке mod_php в качестве модуля Apache он позволяет Apache интерпретировать PHP-файлы (они интерпретируются mod_php).


РЕДАКТИРОВАТЬ: Существует (по крайней мере) два способа запуска PHP при работе с Apache:

  • Использование CGI : процесс PHP запускается Apache, и именно этот процесс PHP интерпретирует PHP-код -- не сам Apache
  • Использование PHP в качестве модуля Apache ( вызванный mod_php) : интерпретатор PHP затем как бы "встроен" в процесс Apache: нет внешнего процесса PHP, что означает, что Apache и PHP могут лучше взаимодействовать .


И отредактируйте заново, после комментария : использование CGI или mod_php зависит от вас: это всего лишь вопрос конфигурации вашего веб-сервера.

Чтобы узнать, какой способ в настоящее время используется на вашем сервер, вы можете проверить вывод phpinfo() : должно быть что-то, указывающее, работает ли PHP через mod_php ( или mod_php5), или через CGI.

Возможно, вы также захотите взглянуть на php_sapi_name() функция: она возвращает тип интерфейса между веб-сервером и PHP.


Если вы проверяете файлы конфигурации вашего Apache, при использовании mod_php должна быть строка LoadModule, которая выглядит следующим образом :

LoadModule php5_module        modules/libphp5.so

( Имя файла справа может быть другим - например, в Windows оно должно быть .dll)

 132
Author: Pascal MARTIN, 2010-04-26 16:03:08

Этот ответ взят из Tuxradar:

При запуске PHP через ваш веб-сервер есть два различных варианта: запустить его с помощью CGI SAPI PHP или запустить его в качестве модуля для веб-сервера. У каждого из них есть свои преимущества, но в целом модуль, как правило, предпочтительнее.

Запуск PHP в качестве CGI означает, что вы в основном сообщаете своему веб-серверу местоположение исполняемого файла PHP, и сервер запускает этот исполняемый файл, предоставляя ему сценарий, который вы вызывается каждый раз, когда вы посещаете страницу. Это означает, что каждый раз, когда вы загружаете страницу, PHP должен прочитать php.ini и установить его настройки, ему нужно загрузить все свои расширения, а затем ему нужно начать работу по разбору скрипта - много повторной работы.

Когда вы запускаете PHP как модуль, PHP буквально сидит внутри вашего веб-сервера - он запускается только один раз, загружает свои настройки и расширения только один раз, а также может хранить информацию в разных сеансах. Например, ускорители PHP полагаются на то, что PHP является возможность сохранять кэшированные данные по всем запросам, что невозможно при использовании версии CGI.

Очевидным преимуществом использования PHP в качестве модуля является скорость - вы увидите большой прирост скорости, если преобразуете CGI в модуль. Многие люди, особенно пользователи Windows, не осознают этого и продолжают использовать php.exe CGI SAPI, что обидно - модуль обычно в три-пять раз быстрее.

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

 56
Author: SpikETidE, 2013-09-16 13:55:56

На вашем сервере должны быть установлены модули php, чтобы он мог анализировать php-код.

Если вы используете ubuntu, вы можете легко сделать это с помощью

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

В противном случае вы можете скомпилировать apache с php: http://dan.drydog.com/apache2php.html

Указание операционной системы вашего сервера поможет другим ответить более конкретно.

 9
Author: cdated, 2010-04-26 11:06:05

Это означает, что вы должны установить PHP в качестве модуля в Apache, вместо того, чтобы запускать его как CGI-скрипт.

 4
Author: Ondrej Slinták, 2010-04-26 10:57:54

Просто чтобы добавить к этим ответам, что mod_php - самый старый и самый медленный метод, доступный на сервере HTTPD для пользователя PHP. Его не рекомендуется использовать, если вы не используете старые версии Apache HTTPD и PHP. php-fpm и proxy_cgi являются предпочтительными методами.

 0
Author: Tejas Sarade, 2018-07-23 12:22:29