Przechodząc przez samouczek Zend , natknąłem się na następujące stwierdzenie:
Zauważ, że ustawienia php_flag w .htaccess działają tylko wtedy, gdy używasz mod_php.
Czy ktoś może wyjaśnić, co to oznacza?
Przechodząc przez samouczek Zend , natknąłem się na następujące stwierdzenie:
Zauważ, że ustawienia php_flag w .htaccess działają tylko wtedy, gdy używasz mod_php.
Czy ktoś może wyjaśnić, co to oznacza?
Odpowiedzi:
mod_php
oznacza PHP, jako moduł Apache .
Zasadniczo, ładując mod_php
jako moduł Apache, pozwala Apache interpretować pliki PHP (te są interpretowane przez mod_php
) .
EDYCJA: Istnieją (przynajmniej) dwa sposoby uruchamiania PHP podczas pracy z Apache:
mod_php
) : interpreter PHP jest wtedy jakby „osadzony” w procesie Apache: nie ma zewnętrznego procesu PHP - co oznacza, że Apache i PHP mogą się lepiej komunikować .
I edytuj ponownie, po komentarzu : używając CGI lub mod_php
zależy od Ciebie: to tylko kwestia konfiguracji Twojego serwera WWW.
Aby dowiedzieć się, który sposób jest aktualnie używany na serwerze, możesz sprawdzić wyjście phpinfo()
: powinno być coś wskazującego, czy PHP działa przez mod_php
(lub mod_php5
) , czy przez CGI.
Możesz również przyjrzeć się php_sapi_name()
funkcji: zwraca typ interfejsu między serwerem WWW a PHP .
Jeśli mod_php
zaznaczysz pliki konfiguracyjne Apache, podczas korzystania z nich powinna pojawić się LoadModule
linia wyglądająca następująco:
LoadModule php5_module modules/libphp5.so
(Nazwa pliku po prawej stronie może być inna - na przykład w systemie Windows powinna to być a .dll
)
mod_php
jest zdecydowanie najpowszechniejszą konfiguracją.
mod_php
to nie jest prawdziwy PHP; to tylko dodatek do Apache. A raczej myślę, że powinieneś zacząć odpowiedź od definicji Co dokładnie oznacza PHP?
Ta odpowiedź pochodzi z TuxRadar :
Podczas uruchamiania PHP przez serwer WWW istnieją dwie różne opcje: uruchomienie go przy użyciu interfejsu PHP CGI SAPI lub uruchomienie go jako modułu dla serwera WWW. Każdy z nich ma swoje zalety, ale ogólnie moduł jest preferowany.
Uruchamianie PHP jako CGI oznacza, że zasadniczo przekazujesz serwerowi WWW lokalizację pliku wykonywalnego PHP, a serwer uruchamia ten plik wykonywalny, przekazując mu skrypt, który wywołałeś, za każdym razem, gdy odwiedzasz stronę. Oznacza to, że za każdym razem, gdy ładujesz stronę, PHP musi odczytać php.ini i ustawić jego ustawienia, musi załadować wszystkie jego rozszerzenia, a następnie musi rozpocząć pracę nad analizą skryptu - jest dużo powtarzalnej pracy.
Kiedy uruchamiasz PHP jako moduł, PHP dosłownie znajduje się na serwerze sieciowym - uruchamia się tylko raz, ładuje ustawienia i rozszerzenia tylko raz, a także może przechowywać informacje między sesjami. Na przykład akceleratory PHP polegają na tym, że PHP może zapisywać dane w pamięci podręcznej między żądaniami, co jest niemożliwe w przypadku wersji CGI.
Oczywistą zaletą używania PHP jako modułu jest szybkość - zobaczysz duży wzrost szybkości, jeśli przekonwertujesz CGI na moduł. Wiele osób, szczególnie użytkownicy Windowsa, nie zdaje sobie z tego sprawy i nadal korzysta z php.exe CGI SAPI, a szkoda - moduł jest zwykle od trzech do pięciu razy szybszy.
Jednak korzystanie z wersji CGI ma jedną kluczową zaletę - PHP odczytuje swoje ustawienia za każdym razem, gdy ładujesz stronę. Gdy PHP działa jako moduł, wszelkie zmiany wprowadzone w pliku php.ini nie zostaną wprowadzone, dopóki nie zrestartujesz serwera WWW, co sprawia, że wersja CGI jest preferowana, jeśli testujesz wiele nowych ustawień i chcesz zobaczyć natychmiastowe odpowiedzi.
Twój serwer musi mieć zainstalowane moduły php, aby mógł analizować kod php.
Jeśli korzystasz z systemu Ubuntu, możesz to łatwo zrobić za pomocą
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
W przeciwnym razie możesz skompilować Apache z php: http://dan.drydog.com/apache2php.html
Określenie systemu operacyjnego serwera pomoże innym odpowiedzieć bardziej szczegółowo.
Oznacza to, że musisz mieć PHP zainstalowane jako moduł w Apache, zamiast uruchamiać go jako skrypt CGI.
Wystarczy dodać te odpowiedzi, że mod_php jest najstarszą i najwolniejszą dostępną na serwerze HTTPD metodą używania PHP. Nie jest zalecane, chyba że używasz starszych wersji Apache HTTPD i PHP. php-fpm i proxy_cgi to metody preferowane.