Serwer WWW i ustawienia PHP Zmieniony 16.1.29. 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. Prostsze adresy - moduå rewrite PoÅ¼Ä danym, ale niewykluczajä cym moå¼liwoå ci obså ugi Joomla! jest Apache skonfigurowany z moduå em mod_rewrit 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 pewn czynnoå ci bezpoå rednio w bazie danych. W takich przypadkach niezbä dny jest program umoå¼liwiajä cy obså ugä baz 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. 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 poz 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ä 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. Bibliotek 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 p zasobach Joomla! specjalnej Å atki eliminujä cej problemy wå Ä czonego safe_mode Warto wiedzieä, że w PHP 6. 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å 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 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Å wietlan komunikatã³w o bå Ä dach zapewnia opcja display_errors=on. OczywiÅ cie, wå Ä czenie tej opcji stwarza pewne zagroå¼e - komunikaty o bå Ä dach zawierajä m.in. peå ne Å cieå¼ki do plikã³w, wersje oprogramowania, fragmenty zapytaå SQL, k moå¼na zå oå liwie wykorzystaä. Ale Joomla! umoå¼liwia wyå Ä czenie wyå wietlania komunikatã³w o bå Ä dach w konfi 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. Konie 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ä addslashe 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ä trzn ź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 dys 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ä takä opcjä. Ale bez tego uå atwienia moå¼na siä obejå Ä. Toteż chociaå¼ ustawienie allow_url_fopen=on jest przy
specjaliå ci od bezpieczeå stwa Joomla! przekonujä do ustawienia bezpieczniejszego: allow_url_fopen=off. Ze wzglä dã³ 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å¼sz wartoå ci. WartoÅ Ä dla post_max_size powinna byä wiä ksza niå¼ dla upload_max_file_size, np. o 1, a wartoå Ä memor powinna byä wiä ksza. Czas wykonywania skryptã³w Maksymalny czas wykonywania skryptã³w ustawiany jest standarodowo max_execution_time=3. JeÅ li po upå ywie tego czasu skrypt nie zostanie wykonany, jego dziaå anie jest przerywane. Standardowe 3 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ä 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=. JeÅ li ustawienie to stwarza problemy, moå¼na zwrã³ciä siä do administratora o modyfikacjä na default_socket_timeout=3. 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=]. 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 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ä. Wystarcz 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å ani witryny niezbä dne. - zielony: sytuacja optymalna. Ustawienia PHP PoÅ¼Ä dane ustawienia PHP
safe_mode - tryb bezpieczny register_globals - rejestrowanie zmiennych globalnych display_errors - wyå wietlanie bå Ä dã³w file_uploads - wczytywanie plikã³w magic_quotes - cytowanie znakã³w niebezpiecznych magic_quotes_gpc - cytowanie znakã³w niebezpiecznych w operacjach GET, POST, COOKIE. magic_quotes_runtime -cytowanie znakã³w niebezpiecznych w innych funkcjach output_buffering - buforowanie danych wyjå ciowych ff Session auto start - obså uga sesji, domyå lnie wyå Ä czona 1 PoÅ¼Ä dane ustawienia PHP allow_url_fopen - dostä p do obiektã³w URL jak do plikã³w 1 short_open_tag - skrã³cone znaczniki 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 3
max_execution_time - maksymalny czas wykonywania skryptã³w 3 Niektóre z istotnych i poå¼ä danych zmiennych moå¼na ustawiä dla konkretnej witryny Joomla, modyfikujä c ustawienia serwera Apache w pliku.httacces.