Что такое mod_php?

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

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

Кто-то может объяснить, что это означает?

102
задан TRiG 16 September 2013 в 13:57
поделиться

4 ответа

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 )

149
ответ дан 24 November 2019 в 04:29
поделиться

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

5
ответ дан 24 November 2019 в 04:29
поделиться

Этот ответ взят из 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 предпочтительной, если вы тестируете много новых настроек и хотите видеть мгновенные ответы.

57
ответ дан 24 November 2019 в 04:29
поделиться

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

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

10
ответ дан 24 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: