Проходячи підручник із Zend , я натрапив на таке твердження:
Зауважте, що параметри php_flag у .htaccess працюють лише у тому випадку, якщо ви використовуєте mod_php.
Хтось може пояснити, що це означає?
Проходячи підручник із Zend , я натрапив на таке твердження:
Зауважте, що параметри php_flag у .htaccess працюють лише у тому випадку, якщо ви використовуєте mod_php.
Хтось може пояснити, що це означає?
Відповіді:
mod_php
означає PHP, як модуль Apache .
В основному, завантажуючись mod_php
як модуль Apache, він дозволяє Apache інтерпретувати файли PHP (ті, що інтерпретуються mod_php
) .
EDIT: Під час роботи з Apache є (принаймні) два способи запуску PHP:
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 це повинно бути a .dll
)
mod_php
на сьогоднішній день є найбільш поширеною конфігурацією.
mod_php
це не справжній PHP; це просто Апачевий аддон. А точніше, я думаю, вам слід почати відповідь із визначення того, що саме означає PHP?
Ця відповідь взята з 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 бажаною, якщо ви протестуєте багато нових налаштувань і хочете побачити миттєві відповіді.
Ваш сервер повинен мати встановлені модулі 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.
Просто слід додати до цих відповідей те, що mod_php - це найстаріший і найповільніший метод, доступний на сервері HTTPD для використання PHP. Це не рекомендується, якщо ви не використовуєте старі версії Apache HTTPD і PHP. php-fpm та proxy_cgi є кращими методами.