LukPG
16.05.2009, 21:01:12
Witam
Zainteresowałem się tematem trybów serwera Apache: modułu Apache oraz CGI. W moim wypadku, po uruchomieniu pliku z phpinfo(), otrzymuję informację:
GATEWAY_INTERFACE CGI/1.1
Rozumiem, że trybem, w którym działa Apache jest CGI?
Na stronie:
http://wiki.joomla.pl/Jak_lepiej_uruchomi%...C5%82_Apache%3Fjest informacja: "Jeżeli Twój serwer jest skonfigurowany dla PHP jako moduł Apache, wtedy będziesz miał wybór użycia pliku albo php.ini albo .htaccess. W przypadku działania PHP w trybie CGI, by zmienić ustawienia możesz korzystać tylko z lokalnego pliku php.ini, ponieważ Apache nie ma już całkowitej kontroli nad PHP. "
Czy to znaczy, że nie mogę korzystać z pliku .htaccess? Wiem, że istnieje jeszcze jedna możliwość: moduł FastCGI. Czy warto wybrać to rozwiązanie? Za pomoc z góry dziękuję.
Pozdrawiam
Możesz korzystać z .htaccess, ale nie możesz umieszczać w nim fragmentów konfiguracji PHP. Osobiście uważam, że skoro jest FastCGI, to nie ma co sobie zawracać głowy zwykłym CGI, który ma tragiczną wydajność, co jest szczególnie widoczne na serwerach, gdzie panuje pewien ruch. Technologia jest właściwie ta sama, tyle że FastCGI działa dużo szybciej dzięki ponownemu wykorzystywaniu tych samych procesów. Co wybrać, to już zależy od zastosowań.
Na strony z mnóstwem kont pojedynczych użytkowników właściwie nie ma dobrego wyboru. Moduł Apache'a ma problem z bezpieczeństwem, CGI z wydajnością, a na FastCGI problematyczne może być odpalenie np. 500 instancji PHP dla każdego użytkownika z osobna. Przy mniejszej liczbie kont FastCGI jest już optymalne, zaś moduł Apache'a można wziąć na serwer obsługujący pojedynczą stronę (PHP pracuje wtedy z uprawnieniami Apache'a, ale przecież Apache'a można odpalić z uprawnieniami danego użytkownika). Na swoim lokalnym komputerze wykorzystuję FastCGI w dość interesujący sposób, mianowicie mam zainstalowane jednocześnie kilka wersji PHP: każda pracuje jako osobna instancja FastCGI z własnym skryptem kontrolującym (czyli mogę je włączać i restartować niezależnie od siebie) i każdą przyporządkowałem do osobnej subdomeny. Kiedy mam jakiś skrypt i chcę go przetestować na PHP 5.2, wchodzę przez jedną subdomenę do niego. Gdy na PHP 5.3, przez drugą, gdy na PHP 6.0-dev, przez trzecią...
Przy tym muszę dodać, że z Apachem i FastCGI jest pewien problem, mianowicie to połączenie nigdy mi dobrze nie działało, a powiem nawet więcej: ono mi nigdy nie działało. Za to z Lighttpd już pracuje się w tym trybie elegancko, tyle że tu nie ma w ogóle .htaccess...
LukPG
17.05.2009, 14:38:18
Dzięki za wyczerpującą odpowiedź. Czy mógłbyś napisać, czy do konfiguracji PHP zalicza się przepisywanie linków (mod_rewrite)? Co można zaliczyć do konfiguracji PHP? Chodzi mi o to, czy mając tryb CGI, mogę korzystać z mod_rewrite w pliku .htaccess?
Pozdrawiam
Konfiguracja PHP to opcje, które masz w php.ini. Zajrzyj sobie, w której dokumentacji masz opisane mod_rewrite, a będziesz mieć jednocześnie odpowiedź, czy zalicza się on do konfiguracji PHP czy nie

.
LukPG
17.05.2009, 17:06:13
Już to jest jasne, dzięki. Kontynuując temat, mam jeszcze jedno pytanie, na które nie mogę znaleźć odpowiedzi

Mianowicie: pisząc CGI w perlu, pliki umieszczamy w katalogu cgi-bin. Ale można też pisać skrypty CGI w PHP. Czy je również należy umieścić w folderze cgi-bin? Ja, mimo że pracuję w trybie CGI serwera Apache, pisząc w PHP, nie umieszczam tych plików w tym folderze, a wszystko działa. Mogę prosić o wyjaśnienie tej kwestii?
Pozdrawiam