Что такое mod_php? - PullRequest
       30

Что такое mod_php?

96 голосов
/ 26 апреля 2010

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

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

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

Ответы [ 5 ]

142 голосов
/ 26 апреля 2010

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)

56 голосов
/ 26 апреля 2010

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

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

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

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

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

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

9 голосов
/ 26 апреля 2010

На вашем сервере должны быть установлены модули 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

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

4 голосов
/ 26 апреля 2010

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

2 голосов
/ 23 июля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...