Просматривая учебник Zend , я наткнулся на следующее утверждение:
Обратите внимание, что настройки php_flag в .htaccess работают только в том случае, если вы используете mod_php.
Может кто-нибудь объяснить, что это значит?
mod_php
означает PHP, как модуль Apache .
В принципе, при загрузке mod_php
в качестве модуля Apache он позволяет Apache интерпретировать PHP-файлы (они интерпретируются mod_php
) .
EDIT: Есть, по крайней мере, два способа запуска 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
)
Этот ответ берется из TuxRadar :
При запуске PHP через ваш веб-сервер существуют два разных варианта: запуск его с использованием PHP CGI SAPI или запуск его в качестве модуля для веб-сервера. Каждый из них имеет свои преимущества, но в целом модуль, как правило, предпочтителен.
Запуск PHP как CGI означает, что вы в основном указываете своему веб-серверу местоположение исполняемого файла PHP, и сервер запускает этот исполняемый файл, предоставляя ему сценарий, который вы вызывали, каждый раз, когда вы посещаете страницу. Это означает, что каждый раз, когда вы загружаете страницу, PHP должен читать php.ini и устанавливать его параметры, он должен загружать все свои расширения, а затем нужно начинать работу по разбору скрипта – много повторной работы.
Когда вы запускаете PHP как модуль, PHP буквально сидит внутри вашего веб-сервера – он запускается только один раз, загружает его настройки и расширения только один раз, а также может хранить информацию через сеансы. Например, ускорители PHP полагаются на то, что PHP может сохранять кэшированные данные по запросам, что невозможно с использованием версии CGI.
Очевидным преимуществом использования PHP в качестве модуля является скорость – вы увидите большой прирост скорости, если вы перейдете из CGI в модуль. Многие люди, особенно пользователи Windows, не понимают этого и продолжают использовать CGI SAPI php.exe, что является позором – модуль обычно в три-пять раз быстрее.
Однако есть одно ключевое преимущество в использовании версии CGI, и это то, что PHP читает свои настройки каждый раз, когда вы загружаете страницу. Если PHP работает как модуль, любые изменения, внесенные вами в файл php.ini, не срабатывают до тех пор, пока вы не перезапустите веб-сервер, что делает версию CGI предпочтительной, если вы тестируете множество новых настроек и хотите видеть мгновенные ответы.
На вашем сервере должны быть установлены модули 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
Указание вашей серверной ОС поможет другим ответить более конкретно.
Это означает, что PHP должен быть установлен как модуль в Apache, вместо того чтобы запускать его как скрипт CGI.