UWAGA: Strona zawiera materiały archiwalne. Większość artykułów dotyczy Joomla! 1.0
Start arrow Instalacje arrow Serwer WWW i ustawienia PHP
Serwer WWW i ustawienia PHP Drukuj Email
Zanim się zdecydujesz wykupić miejsce na serwerze bądź na serwer darmowy, sprawdź, czy środowisko serwera umożliwi pełną i bezproblemową obsługę Joomla!

Serwer WWW

Joomla! może być zainstalowany na każdym serwerze WWW, który obsługuje PHP, np. Internet Information Server (IIS) w wersji 5 lub wyższej dostępnym w systemie Windows.

Najlepiej - serwer Apache

Najlepszym serwerem internetowym dla Joomla! jest jednak Apache co najmniej w wersji 1.13.19. Oczywiście, im nowsze wydanie, tym lepiej. Może to więc z powodzeniem być Apache v. 2.0

Prostsze adresy - moduł rewrite

Pożądanym, ale niewykluczającym możliwości obsługi Joomla! jest Apache skonfigurowany z modułem mod_rewrite, który umożliwia przetwarzanie skomplikowanych, generowanych przez Joomla! adresów URL na prostsze, ’przyjazne’ w postaci np. www.joomla.pl/content/view/2/5/.

Serwer baz danych

Joomla! korzysta z bazy danych MySQL. Musi to być co najmniej MySQL w wersji 3.23.x. Oczywiście, podobie jak w przypadku Apache, może to być także MySQL w wersji 4.x.x czy 5.x.x

W kolejnych wersjach Joomla! przewidziane jest zastosowanie rozwiązań umożliwiających korzystanie z różnych baz danych. Tak że ograniczenie, iż musi to być MySQL może się okazać z czasem nieaktualne.

Klient obsługi bazy danych

W codziennych pracach administracyjnych mogą się zdarzyć sytuacje, w których niezbędne będzie wykonanie pewnych czynności bezpośrednio w bazie danych. W takich przypadkach niezbędny jest program umożliwiający obsługę bazy, np. phpMyAdmin bądź inny.

Brak takiego programu powinien w zasadzie przemawiać za rezygnacją z usług dostawcy. Jeśli jednak rezygnacja nie wchodzi w grę, można zainstalować w Joomla! komponent, który w razie potrzeby pozwoli obsłużyć problemy z bazą danych z poziomu panelu administracyjnego. Trzeba się jednak liczyć z możliwością uszkodzona np. tabeli sesji, w wyniku czego zalogowanie się do panelu administracyjnego Joomla! nie będzie w ogóle możliwe.

PHP

Joomla! jest napisany w PHP, stąd język ten musi być zainstalowany na serwerze WWW. Musi to być co najmniej PHP w wersji 4.2.x. Ale to rzeczywiście niezbędne minimum. Aktualnie standardem jest instalowanie na serwerach PHP w wersji 5.x.x. Wbrew częstym obiegowym opiniom, PHP w wersji powyżej 5.0 jest dobrym rozwiązaniem dla Joomla!, choć może czasem stwarzać kłopoty.

Ustawienia PHP

Odpowiednie dla Joomla ustawienia PHP można podzielić na trzy grupy: podstawowe, zalecane oraz pożądane, ale niekonieczne.

Podstawowe wymagania

Trzy wymagania są dla pełnej obsługi Joomla! niezbędne:

  • włączona obsługa XML,
  • włączona obsługa biblioteki zlib,
  • włączona obsługa biblioteki GD lub GD2.

Bez włączonej obsługi XML Joomla! nie będzie działać. Skrypty XML zawierają m.in. instrukcje konfigurujące pozycje menu, komponenty, moduły, boty i szablony.

Biblioteka Zlib umożliwia kompresję i dekompresję spakowanych plików. Można się wprawdzie bez tej funkcji obyć, ale jej brak stanowi poważne utrudnienie. Wszystkie trzeba instalować z rozpakowanych i przesłanych na serwer pakietów źródłowych. Niemożliwe jest również korzystanie ze wszystkich funkcji komponentów obsługujących plikownie czy galerie grafik.

GD jest biblioteką graficzną, umożliwiającą manipulację obrazami - m.in. dynamiczne tworzenie miniatur. Biblioteka jest dostępna na warunkach GNU GPL pod adresem www.libgd.org.

Istotne ustawienia PHP

Wyłączony tryb bezpieczny

Obsługa Joomla! wymaga PHP z wyłączonym trybem bezpiecznym [safe_mode=OFF]. Włączenie tej opcji ogranicza wykonywanie skryptów PHP. Dla administratorów Joomla! efekt włączenia bezpiecznego trybu jest szczególnie uciążliwy w okresie tworzenia zrębów witryny - niemożliwe jest bowiem instalowanie rozszerzeń - komponentów, modułów, botów, szablonów (dokładniej - utworzenie katalogów niezbędnych do zainstalowania nowego składnika). W skonfigurowanym Joomla! włączony tryb bezpieczny również stwarza spore kłopoty przy wczytywaniu plików (np. graficznych do Biblioteki mediów czy przez komponent obsługujący plikownię).

Na serwerach z włączonym trybem bezpiecznym nie należy instalować Joomla!, bo szanse na przekonanie administratora, by tę opcję wyłączył, są raczej niewielkie. Jeśli już musimy korzystać z takiego serwera, warto poszukać w zasobach Joomla! specjalnej łatki eliminującej problemy włączonego safe_mode

Warto wiedzieć, że w PHP 6.0 safe_mode zostanie zlikwidowanym, bowiem wbrew przeznaczeniu jego walory dla bezpieczeństwa są niewielkie.

Wyłączona rejestracja zmiennych globalnych

Dyrektywa register_globals ustala, czy zmienne środowiska, GET, POST, COOKIE i serwera mają być rejestrowane. Ustawienie register_globals=ON stwarza zagrożenie w przypadku źle napisanych skryptów (niewłaściwych knstrukcji pętli i warunkow). Powoduje, że wszystkie zmienne wysłane do skryptu tworzone są jako globalne i nadpisują wcześniej ustalone wartości tych zmiennych lub tworzą zmienne jeszcze nieistniejące, ale wykorzystywane później w skrypcie. Tę sytuację mogą wykorzystać średnio zaawansowani rozbójnicy internetowi, aby np. oszukać procedurę autoryzacji.

Dla Joomla! ta dyrektywa winna być wyłączona - dostęp do zmiennych EGCPS realizowany jest za pomocą składni $HTTP_ENV_VARS['zmienna'] lub $_POST['zmienna'] czy też $HTTP_GET_VARS['zmienna'] lub $_GET['zmienna']. Wyłączenie register_globals powoduje, że PHP nie utworzy żadnych nie zdefiniowanych wprost w skrypcie zmiennych globalnych.

Opcję register_globals można jednak wyłączyć dla konkretnego katalogu. Wystarczy w pliku .htaccess wpisać wiersz:

php_flag register_globals 0
Włączone wyświetlanie błędów

Możliwość poznania przyczyn błędów w działaniu skryptów jest administratorom Joomla! niezbędna. Wyświetlanie komunikatów o błędach zapewnia opcja display_errors=ON. Oczywiście, włączenie tej opcji stwarza pewne zagrożenia - komunikaty o błędach zawierają m.in. pełne ścieżki do plików, wersje oprogramowania, fragmenty zapytań SQL, które można złośliwie wykorzystać. Ale Joomla! umożliwia wyłączenie wyświetlania komunikatów o błędach w konfiguracji globalnej (o czym warto sobie przypomnieć po przetestowaniu działania Joomla!).

Możliwe wczytywanie plików

Joomla! wymaga PHP z włączoną możliwością wczytywania plików binarnych wysyłanych metodą POST. Konieczne jest więc ustawienie dyrektywy file_uploads. Bez takiego ustawienia nie będzie możliwe ani instalowanie rozszerzeń, ani przesyłanie plików do Biblioteki mediów czy innych katalogów, np. komponentu obsługującego udostępnianie dokumentów.

Cytowanie znaków niebezpiecznych

Trzy ustawienia PHP odpowiadają za ważne dla obsługi Joomla! cytowanie znaków niebezpiecznych:

  • magic_quotes=ON
  • magic_quotes_gpc=ON
  • magic_quotes_runtime=ON

Gdy magic_quotes są włączone, wszystkie znaki apostrofu ('), cudzysłowia ("), lewe ukośniki (\) oraz znaki NULL są poprzedzane znakami znaku lewego ukośnika (\). Włączenie ’magicznych ukośników’ chroni Joomla! przed atakami typu SQL Injection [’wstrzykiwania zapytań SQL’] w przypadkach, gdy programista zapomni gdzieś przefiltrtować dane przesyłane przez użytkowników w formularzach.

Gdy włączona jest opcja magic_quotes_gpc, to PHP automatycznie dodaje lewy ukośnik do wszystkich operacji posługujących sie zmiennymi z tablic superglobalnych [POST, GET COOKIE], wykonując wcześniej funkcję addslashes().

Dyrektywa magic_quotes_runtime ma natomiast wpływ tylko na niektóre funkcje wykonujące i niewykonujące operacji addslashes() [wykonujące: file(), file_get_contents(), fread(), fgets(); niewykonujące: readfile(), parse_ini_file(), fgetss(), fgetc(), fgetcsv(), fscanf()]. W efekcie jej włączenia większość funkcji, które zwracają dane z dowolnych zewnętrznych źródeł, włącznie z danymi z baz danych i plików tekstowych, będzie zwracała dane z apostrofami i cudzysłowami poprzedzonymi znakiem lewego ukośnika (\).

Pożądane ustawienia PHP

Włączone otwieranie plików na serwerze

Ustawienie allow_url_fopen włącza możliwość wykorzystania funkcji fopen(), aby uzyskać dostęp do plików na dysku lokalnym serwera przez podanie adresu URL z wykorzystaniem protokołów HTTP i FTP, znajdujących się na zdalnych serwerach. Ustawienie to może być wykorzystane w ataku na serwer. Powoduje ono, że w funkcjach takich jak fopen(), include(), require() można używać adresów URL jak plików, co może prowadzić do wielu problemów: włamań do serwisu, blokady serwera WWW czy znacznego spowolnienia odczytywania strony.

Jeśli allow_url_fopen zostanie wyłączone, niemożliwa będzie m.in. automatyczna aktualizacja rozszerzeń, posiadających taką opcję. Ale bez tego ułatwienia można się obejść. Toteż chociaż ustawienie allow_url_fopen=ON jest ’przyjazne’, specjaliści od bezpieczeństwa Joomla! przekonują do ustawienia bezpieczniejszego: allow_url_fopen=OFF. Ze względów bezpieczeństwa włączenie i wyłączenie tej funkcji jest możliwe tylko w pliku php.ini.

Maksymalny rozmiar przesyłanych plików

Dwa ustawienia decydują o dopuszczalnych rozmiarach plików przesyłanych na serwer:

  • upload_max_file_size= - określa maksymalny dopuszczalny rozmiar wczytywanych plików,
  • post_max_size= - określa maksymalny rozmiar danych przesyłanych metodą POST

Odpowiednie ustawienie zależy od potrzeb witryny. Standardowo administratorzy zezwalają na wczytywanie plików o rozmiarach do 8MB. Jeśli nasze potrzeby są większe, trzeba się zwrócić z prośbą do administratora o podwyższenie tej wartości. Wartość dla post_max_size powinna być większa niż dla upload_max_file_size, np. o 1, a wartość memory_limit powinna być większa.

Czas wykonywania skryptów

Maksymalny czas wykonywania skryptów ustawiany jest standarodowo max_execution_time=30. Jeśli po upływie tego czasu skrypt nie zostanie wykonany, jego działanie jest przerywane. Standardowe 30 sekund jest ustawieniem wystarczajacym, chroni przed blokowaniem serwera przez źle napisane skrypty. Jeśli ustawienie to staje się powodem błędu, należy odszukać wadliwy skrypt i albo go poprawić, albo zrezygnować z niego, zastępując innym rozwiązaniem.

Czas oczekiwania na przesłanie danych

Maksymalny czas oczekiwania na przesłanie strumienia danych ze źródła zależy od ustawienia default_socket_timeout. Najczęściej spotykanym jest ustawienie default_socket_timeout=0. Jeśli ustawienie to stwarza problemy, można zwrócić się do administratora o modyfikację na default_socket_timeout=30.

Krótkie znaczniki

Ustawienie short_open_tag decyduje o możliwości stosowania w skryptach skróconej formy znaczników otwierających - <? zamiast - <?php. Ponieważ Joomla! używa PHP w połączeniu z XML, opcja ta winna być wyłączona [short_open_tag=0]. Zdarza się wszakże, że na wielu serwerach jest włączona. W efekcie mogą pojawiać się różnego typu błędy w przypadkach, gdy PHP napotka skrócone znaczniki otwierające. Najczęśćiej zatrzymywane jest wykonywanie skryptu. Niekiedy wyświetlany jest kod skryptu.

Jeśli prośba do administratora o zmianę tego ustawienia nie przyniesie rezultatu, nie ma co wpadać w panikę. Wystarczy przejrzeć skrypty rozszerzenia, które sprawia kłopoty, wyszukać w nich sekwencje <? i zastąpić je tekstem <?php

Lista kontrolna

Poniższa lista zawiera zestawienie wszystkich zalecanych i pożądanych ustawień. Znaczenie zastosowanych kolorów jest następujące:

  • czerwony: wymaganie musi być spełnione,
  • pomarańczowy: wymaganie powinno być spełnione, ale można je obejść przy pomocy łatek lub nie jest do działania witryny niezbędne.
  • zielony: sytuacja optymalna.
Ustawienia PHP
Pożądane ustawienia PHP
safe_mode - tryb bezpieczny On Off
register_globals - rejestrowanie zmiennych globalnych On Off
display_errors - wyświetlanie błędów Off On
file_uploads - wczytywanie plików Off On
magic_quotes - cytowanie znaków niebezpiecznych Off On
magic_quotes_gpc - cytowanie znaków niebezpiecznych w operacjach GET, POST, COOKIE. Off On
magic_quotes_runtime -cytowanie znaków niebezpiecznych w innych funkcjach Off On
output_buffering - buforowanie danych wyjściowych On 0ff
Session auto start - obsługa sesji, domyślnie wyłączona 1 0
Pożądane ustawienia PHP
allow_url_fopen - dostęp do obiektów URL jak do plików 0 1
short_open_tag - skrócone znaczniki On Off
upload_max_file_size - dopuszczalny rozmiar wczytywanych plików poniżej 2M 2M i więcej
post_max_size - maks. rozmiar danych przesyłanych metodą POST poniżej 8M 8M i więcej
default_socket_timeout - czas oczekiwania na przesłanie danych 0 30
max_execution_time - maksymalny czas wykonywania skryptów 0 30

Niektóre z istotnych i pożądanych zmiennych można ustawić dla konkretnej witryny Joomla, modyfikując ustawienia serwera Apache w pliku .httacces.

Zmieniony ( 16.10.2009. )
 
« poprzedni artykuł   następny artykuł »