Errata. Instalacja sklepu internetowego Aplikacja sklepu internetowego została napisana i przetestowana w rodowisku PHP 4 oraz MySQL 4.0. Poniewa jednak na płycie CD-ROM dołczonej do ksiki znajduje si pakiet Krasnal Serv, który zawiera w sobie PHP 5 oraz MySQL 3.23. napisalimy t errat, aby pocztkujcym czytelnikom pokaza sposób radzenia sobie z problemami, na które mona natrafi podczas instalacji sklepu internetowego. Uwaga: pakiet Krasnal Serv został przeznaczony dla rodowiska Windows i pozwala na dokonanie automatycznej instalacji oprogramowania serwera WWW, bazy danych oraz interpretera PHP. Doszlimy do wnioski, e w przypadku uytkowników Linux, wiedza wymagana do kompilacji, instalacji oraz konfiguracji rodowiska pracy pozwoli tym uytkownikom na samodzielne uporanie si z problemami, które zreszt nie bd wystpowa, jeeli aplikacja zostanie uruchomiona w rodowisku PHP 4 i MySQL 4.0. Warto jedynie zapozna si ze sposobem wyłczenia mechanizmu przechwytywania błdów (opis niej), chocia uwana lektura rozdziału Co naley wiedzie powinna dostarczy wiedzy pozwalajcej na wykonanie tej operacji samodzielnie. Krasnal Serv zawiera w sobie nastpujce programy: Apache 1.3.31; MySQL 3.23.58; PHP 5.0 RC3; ActivePerl 5.6.1.628; phpmyadmin 2.6.0 beta 2; CesarFTP 0.99G; WebAlizer 2.1.; Free SMTP Server; Z naszego punktu widzenia interesujce s: Apache, MySQL, PHP oraz ewentualnie phpmyadmin.(sam program Krasnal Serv najlepiej zainstalowa z ustawieniami domylnymi włczone wszystkie opcje). Serwer SMTP moe przyda si gdy wysyłamy wiadomoci e-mail potwierdzajce rejestracj w serwisie, lecz nie jest on konieczny (patrz rozdział Rejestracja i zarzdzanie klientami). Procedura instalacji Krasnal Serv przebiega automatycznie i nie powinna nikomu sprawi problemów. Po zainstalowaniu naley uruchomi program Krasnal Serv. Aby sprawdzi czy instalacja serwera przebiegła pomylnie wystarczy otworzy przegldark WWW i wpisa w pasku adresu http://localhost. W odpowiedzi powinnimy zobaczy obraz jak na rysunku 1.
Rysunek 1. Strona startowa Krasnal Serv Po zainstalowaniu Krasnal Serv naley cign poprawion wersj sklepu internetowego spod adresu ftp://ftp.helion.pl/przyklady/phmtsi.zip (wersja sklepu znajdujca si na płycie zawiera błd). Instalacja bazy danych Instalacj bazy danych sklepu internetowego wykonamy korzystajc tekstowego klienta bazy danych MySQL o nazwie mysql, który jest standardowo instalowany razem z serwerem MySQL. 1. Baza danych sklepu internetowego znajduje si w pliku /sklepinternetowy/sql/sklep.sql (patrz archiwum phmtsi.zip). Plik zapiszmy w katalogu /sciezka/mysql/bin/, gdzie /sciezka jest ciek dostpu do instalacji Krasnal Serv. 2. Otwórzmy wiersz polece (Start / Uruchom, a nastpnie wpisujemy cmd) po czym przeniemy si do katalogu /sciezka/mysql/bin/; 3. Import bazy danych sklepu internetowego sprowadza si do wpisana nastpujcej instrukcji w wierszu polece: > mysql -u root -p < sklep.sql Enter password: krasnal Podczas importu bazy danych sklepu internetowego musimy poda login oraz hasło dostpu do serwera MySQL. Podczas instalacji Kransnal Serv login ustawiany jest na root, a hasło na krasnal. Wyróniony napis krasnal, który stanowi hasło dostpu do serwera MySQL w rzeczywistoci pojawi si w postaci znaków *. 4. Aby zobaczy jak wyglda baza danych sklepu internetowego skorzystamy z aplikacji phpmyadmin, która powinna znajdowa si pod adresem http://localhost/phpmyadmin (Krasnal Serv musi by oczywicie cały czas uruchomiony);
Zostanie wywietlone okno pokazane na rysunku 2. Naley poda login oraz hasło dostpu do serwera bazy danych MySQL. Domylnym loginem jest root a hasłem: krasnal. Rysunek 2. W trakcie uruchamiania aplikacji phpmyadmin zostaniemy poproszeni o podanie loginu oraz hasła umoliwiajcego dostp do serwera bazy danych MySQL Jeeli login oraz podane hasło bd poprawne w oknie przegldarki WWW powinien pojawi si obraz widoczny na rysunku 3. Rysunek 3. Baza danych sklepu internetowego w aplikacji phpmyadmin 4. Aby wywietli baz danych sklepu internetowego naley z listy rozwijanej Baza danych wybra sklep. Baza zawiera 30 tabel. Dziki aplikacji phpmyadmin moemy przeglda zawarto poszczególnych tabel bazy jak równie modyfikowa znajdujce si w nich dane.
Instalacja aplikacji sklepu internetowego Proces instalacji aplikacji sklepu internetowego nie jest zbyt skomplikowany ale wymaga (niestety) dokonania modyfikacji jednego z plików ródłowych aplikacji (nie liczc pliku konfiguracyjnego). Teraz opiszemy go krok po kroku. Uwaga: Aplikacja sklepu internetowego została napisana w PHP 4, a poniewa Krasnal Serv zawiera w sobie PHP w wersji 5.0 musimy w odpowiedni sposób skonfigurowa jego rodowisko zrobimy to w dalszej czci. 1. Skopiujmy do dowolnego katalogu na dysku komputera, na którym zainstalowalimy Krasnal Serv pliki z archiwum phmtsi.zip. 2. Otwórzmy plik httpd.conf, który jest plikiem konfiguracyjnym serwera Apache. Najlepiej zrobi to poprzez ikon Krasnal Serv znajdujc si na pasku zada, tak jak zostało to pokazane na rysunku 4. Rysunek 4. Otwieranie pliku httpd.conf poprzez ikon Krasnal Serv znajdujc si na pasku zada systemu 3. Odszukajmy w pliku httpd.conf dyrektyw VirtualHost. Powinna ona wyglda mniej wicej tak: #<VirtualHost *> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost> Jest to definicja tzw. serwera wirtualnego. Serwery wirtualne pozwalaj na jednym serwerze Apache uruchomi kilka niezalenych serwisów internetowych, z których kady moe mie osobny adres DNS. Serwis sklepu internetowego zdefiniujemy włanie w ten sposób.
Uwaga: znak # przed nazw oznacza, e tekst wystpujcy po znaku stanowi komentarz i nie jest interpretowany przez serwer Apache. Zmodyfikujmy dyrektyw VirtualHost w nastpujcy sposób: <VirtualHost *> ServerName sklep.localhost DocumentRoot c:/usr/krasnal/sklepinternetowy/www </VirtualHost> Uwaga: naley zwróci uwag na fakt, i znak # został usunity, wic Apache zinterpretuje kad lini. W definicji wirtualnego serwera znajduj si dwie dyrektywy. Dyrektywa ServerName podaje nazw DNS pod jak bdzie dostpny serwis WWW. W naszym przypadku jest to nazwa sklep.localhost, co oznacza, e aplikacja sklepu internetowego bdzie dostpna, gdy w pasku adresu przegldarki WWW wpiszemy http://sklep.localhost. Druga dyrektywa, dyrektywa DocumentRoot wskazuje na katalog, z którego bd pobierane pliki aplikacji sklepu internetowego. Dyrektywa ta musi wskazywa na katalog /sklepinternetowy/www. Po wprowadzeniu zmian do pliku httpd.conf naley zapisa zmiany na dysku. 4. Naley teraz zrestartowa Krasnal Serv, aby serwer Apache załadował nowy plik konfiguracyjny. Moemy to zrobi wybierajc z menu Krasnal Serv (rysunek 4.) polecenie Restart. 5. W pliku httpd.conf przypisalimy nazw sklep.localhost do aplikacji sklepu internetowego. Jednak przegldarka WWW misi wiedzie jaki adres IP zwizany jest z t nazw. W normalnych warunkach pracy do zamiany nazwy DNS na adres IP wykorzystywany jest serwer DNS. W naszym wypadku nie wchodzi to jednak w rachub, wic musimy zrobi to inaczej. Otwórzmy plik c:/windows/system32/drivers/etc/hosts. W pliku umiemy linijk: 127.0.0.1 sklep.localhost a nastpnie zapiszmy plik. 6. Jeeli teraz w oknie przegldarki WWW wpiszemy http://sklep.localhost/, to powinnimy uzyska obraz jak na rysunku 5. Rysunek 5. Komunikat o błdzie widoczny na rysunku oznacza, e nastpiło połczenie z aplikacj sklepu internetowego Konfiguracja aplikacji sklepu internetowego Aby sklep internetowy działał poprawnie naley go odpowiednio skonfigurowa. Komunikat widoczny na rysunku 5, który pojawi si zaraz po uruchomieniu aplikacji oznacza, e mechanizm przechwytywania błdów
(który został opisane w rozdziale 2, w podrozdziale Mechanizmy obsługi i raportowania błdów) wychwycił błd aplikacji, i zapobiegł jego wywietleniu (ze wzgldów bezpieczestwa). 1. W pierwszej kolejnoci musimy zablokowa mechanizm przechwytywania błdów, aby uzyska informacje na temat tego co jest przyczyn błdów. W tym celu otwórzmy w dowolnym notatniku plik index.php. znajdujcy si w katalogu /sklepinternetowy/www. Powinien on wyglda mniej wicej tak jak wida to na listingu 1. Listing 1. Plik index.php. Główny plik czci publicznej aplikacji <?php ob_start("myfunc"); //Funkcja przechwytujca bufor function myfunc($content) {} // Główny plik index require_once('../application/mindex.php'); //Wywietlenie zawartoci bufora ob_end_flush();?> Aby wyłczy mechanizm przechwytywania błdów wystarczy usun wywołania ob_start() oraz ob._end_flush(). Najprociej zrobi to tak jak zostało to pokazane na listingu 2. Listing 2. Plik index.php. Główny plik czci publicznej aplikacji wyłczenie mechanizmu przechwytywania błdów <?php //ob_start("myfunc"); //Funkcja przechwytujca bufor function myfunc($content) {} // Główny plik index require_once('../application/mindex.php'); //Wywietlenie zawartoci bufora //ob_end_flush();?> Zakomentowanie niechcianych polece spowoduje, e po skonfigurowaniu sklepu internetowego bdziemy mogli szybko przywróci poprawn posta pliku index.php. 2. Po odwieeniu zawartoci okna przegldarki WWW powinnimy uzyska obraz jak na rysunku 6. Pierwsze spojrzenie na komunikat pozwala nam od razu stwierdzi, e przyczyn błdu jest niemoliwo załadowania klasy PEAR.php. Co w praktyce oznacza, e wymagany przez aplikacj pakiet PEAR nie został zainstalowany.
Rysunek 6. Wyłczony mechanizm przechwytywania błdów 3. Instalacja PEARa jest do prosta. Moemy wykorzysta gotowy skrypt, który znajduje si w katalogu /php/pear pod nazw go-pear.php. Gdzie php jest ciek dostpu do folderu instalacyjnego PHP 5. Aby rozpocz instalacj w linii polece przeniemy si do katalogu, w którym zainstalowane jest PHP 5 i wpiszmy: > php PEAR/go-pear.php Polecenie to rozpoczyna proces instalacji bibliotek PEAR. Wymagane jest połczenie z Internetem, aby załadowa i cign dodatkowe pakiety. W trakcie procesu instalacji skrypt bdzie zadawał nam wiele pyta. Wystarczy jeeli w odpowiedzi na nie bdziemy naciska ENTER. W trakcie instalacji pakietu PEAR plik php.ini znajdujcy si w katalogu instalacyjnym PHP zostanie zmodyfikowany (chyba, e nie wyrazimy na to zgody), tak aby zawierał definicj cieki instalacyjnej zbioru bibliotek PEAR w dyrektywie include_path. Przegrajmy ten plik do katalogu systemowego (domylnie c:\windows). 4. Po zainstalowaniu PEARa musimy doda do niego jeszcze dwie biblioteki, które standardowo nie s instalowane. Mowa o bibliotekach (Log oraz Mail-mime). Pakiety te mona cign z serwisu pear.php.net lub te z CD-ROMu dołczonego do ksiki, z katalogu PEAR/Pakiety. Naley rozpakowa archiwum Log-1[1].8.3.tgz i przegra do katalogu instalacyjnego PEARa plik Log.php oraz katalog Log wraz z zawartoci. Nastpnie naley rozpakowa archiwum Mail_Mime-1[1].2.1.tgz, a pliki znajdujce si w tym archiwum (pliki PHP, XSL oraz DTD) naley przegra do katalogu /PEAR/Mail. 5. Zrestartujmy Krasnal Serv, aby załadowa nowe ustawienia z pliku php.ini. 6. Jeeli teraz odwieymy zawarto okna w przegldarce WWW powinnimy otrzyma obraz jak na rysunku 7. Widoczny na rysunku komunikat informuje nas, e nie mona nawiza połczenia z baz danych. Rysunek 7. Aplikacja informuje nas o braku połczenia z baz danych 7. Aby uruchomi sklep internetowy, w pliku konfiguracyjnym aplikacji /config/define.cfg.php naley odszuka definicje stałych DB_USERNAME, DB_PASSWD. Powinny one zosta zmienione tak jak wida to na listingu 3. Listing 3. Zmiana uytkownika
<?php define('db_username', 'root'); define('db_passwd', 'krasnal');?> 8. Odwiemy teraz zawarto okna przegldarki WWW i viola!!! (rysunek 8.). Uruchomilimy nasz aplikacj WWW. Rysunek 8. Uruchomiona aplikacja sklepu internetowego 9. Gdyby aplikacja działała pod PHP 4 byłby to ju koniec naszej pracy. Poniewa jednak uruchomilimy j pod PHP 5 spotkamy si z jeszcze jednym błdem. Przejdmy do sekcji Załó konto, gdzie znajduje si formularz rejestracji nowego klienta i bez wypełniania formularza kliknijmy przycisk Dalej. W odpowiedzi na ekranie zobaczymy błd jak na rysunku 9. Błd ten jest spowodowany tym, i PHP 5 nie jest w 100% kompatybilny z PHP 4. Aby pozby si tego błdu musimy niestety dokona przeróbek w kodzie ródłowym aplikacji (ale na szczcie polegajcych na operacji wytnij wklej). Rysunek 9. Błd bdcy wynikiem braku 100% kompatybilnoci PHP 5 z PHP 4.
10. Otwórzmy plik /modules/form/forms.inc.php i przejdmy do linii 98, w której rozpoczyna si definicja metody checkform().w metodzie tej, na samym pocztku znajduj si definicje czterech funkcji (listing 4. kod wytłuszczony). Listing 4. Fragment kodu metody checkform() <?php class Forms extends XML_DomDoc { function checkform(&$resultarray) { //Warunki współzalene function checkcondition($cond, $mtd) {} //MIN - MAX function checkminmax($min, $max, $msg) {} //Maska function checkmask($mask, $msg) {} //Sprawdza jaka selekcja została wykonana function checkselection($selection, $obj) {} //Właciwy kod $listaelementow = $this->getformelements(); }?> } Wszystko co naley zrobi, to wyrzuci definicj tych funkcji przed definicj klasy Forms (wyci kod PHP wszystkich czterech funkcji z metody checkform() i skopiowa je przed class Forms. I to wszystko. Od tej pory formularze w aplikacji bd działa. Uwaga: Poniewa aplikacja powinna działa w rodowisku PHP 4 oraz MySQL 4.0 (a nie PHP 5 oraz MySQL 3.23. jak w Krasnal Serv) mog wystpi inne błdy. Naley wtedy uwanie czyta komunikaty błdów aby móc je usun lub po prostu zainstalowa PHP 4 oraz MySQL 4.0. W tym miejscu warto wspomnie, e stosowanie pakietów typu Krasnal Serv przez pocztkujcych uytkowników nie jest naszym zdaniem zbyt dobrym rozwizaniem. Powód tego jest taki, i w przypadku gdy co pójdzie nie tak, uytkownik nie poradzi sobie z problemem (np. nie uruchamia si serwer Apache ale serwer MySQL startuje. Na pasku zada ikona Krasnal Serv zawiera komunikat BŁD). Lepiej pomczy si troch instalujc kady komponent z osobna i tym samym dokładnie pozna sposób jego instalacji i konfiguracji, i potem móc rozwiza kady wystpujcy problem. Warto pamita, e w przypadku systemów Windows i tak proces instalacji jest najczciej banalny, poniewa programy s udostpniane w postaci tzw. setupów czyli automatycznych instalerów. Uytkownicy systemów Linux nie maj czsto tego komfortu i musz programy kompilowa z kodu ródłowego. Polecamy zainstalowanie aplikacji sklepu internetowego w rodowisku PHP 4 i MySQL 4.0. Dodatkowo mona wybra serwer Apache 2.0 lub IIS.
I jeszcze jedno. Tak jak dla polityków jednym z waniejszych haseł powinno by słynne Gospodarka głupcze tak dla informatyków witoci powinno by RTFM (rozwinicie skrótu w Google.com).