Что такое mod_php?

84

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

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

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

Теги:

4 ответа

122
Лучший ответ

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

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


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

  • Использование CGI: процесс PHP запускается Apache, и именно этот процесс PHP интерпретирует PHP-код - не сам Apache
  • Использование PHP в качестве Apache module (называемый 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)

  • 0
    Я использовал xampp для установки пакета php, apache и mysql ... Итак, каковы будут мои настройки?
  • 0
    Вы должны включить его, если PHP в настоящее время не работает. Если PHP уже работает, то он должен использовать CGI, и в этом случае вам, вероятно, потребуется сделать больше, чем просто включить модуль. Модуль может даже не существовать в системе.
Показать ещё 4 комментария
52

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

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

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

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

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

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

  • 0
    @JohannEchavarria, Если вы не добавили много сумасшедших вещей, перезапуск сервера займет всего несколько секунд. Для «обычных» современных систем с SSD это менее 2 секунд.
9

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню