Jakiś czas temu miałem nieodpartą chęć spróbowania nowych funkcjonalności, jakie wprowadzono w PHP 5.3. Przestrzenie nazw oraz late static binding, to tylko niektóre z bardzo przydatnych nowości – na pewno doceni to niejeden programista. Jednak ze względu na fakt, że życie w moim [naszym? ;]] zawodzie nie jest usłane różami, nawet sama aktualizacja instalacji serwera lokalnego przysporzyła trochę problemów. Jednym z nich jest błąd w plikach konfiguracyjnych, którego naprawę opiszę dzisiaj.
Problem.
Dzisiejszy post traktuje o bardzo „brzegowej” sytuacji, która w wielu przypadkach uniemożliwia pracę serwera lokalnego opartego o instalację pakietu WampServer.
Podczas jego domyślnej instalacji mamy do wyboru tylko jedną wersję każdego z elementów – PHP, MySQL, Apache. Mamy jednak dostęp do bardzo fajnego sposobu aktualizacji – wystarczy ściągnąć odpowiedni plik ze strony projektu i możemy doinstalować dowolną, alternatywną wersję każdego z komponentów i w łatwy sposób przełączać się pomiędzy nimi.
Zrobiłem tak i ja, ściągając z Internetu paczkę zawierającą PHP 5.3.1 i nieświadomy nadchodzących problemów… zainstalowałem ją. Nie napotkałem tutaj żadnych problemów, więc szybko przełączyłem domyślną 5.2.x na nową. W tym momencie WampServer zaprotestował tytułowym błędem:
The configuration file contains a syntax error on line 819: [EParseError] Invalid Section tag.
Pomimo najszczerszych chęci nie byłem w stanie domyślić się o co mu chodziło, więc szybko zagooglałem odpowiednie hasła i znalazłem informację, że podczas aktualizacji WampServera do PHP 5.3.x występuje m. in. błąd podczas aktualizacji istniejących plików konfiguracyjnych. Bardziej szczegółowo – niektóre wpisy zostają nadpisane w dziwny sposób wraz z komentarzami dotyczącymi ich przeznaczenia.
Rozwiązanie.
Aby rozwiązać ten problem, należy zatrzymać, a najlepiej wyłączyć cały pakiet WampServer. W przeciwnym wypadku program sam, ponownie, błędnie nadpisze nasze poprawki. Serwer wyłączony? Możemy przystąpić do naprawy.
Pierwszym plikiem, jaki należy naprawić, będzie php.ini w nowej wersji PHP. Każda zainstalowana wersja jest przechowywana w oddzielnym katalogu, dlatego musimy zlokalizować ścieżkę:
%WAMPPATH%\bin\php\php 5.3.1\
i otworzyć plik php.ini. Przez makro %WAMPPATH% oczywiście rozumiem katalog główny naszej instalacji WampServera. Wyszukajmy następujące linijki konfiguracji rozszerzeń:
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
Należy usunąć z nich komentarze i wszystkie zbędne spacje [ważne!]. Gotowy fragment do zastąpienia:
;extension=php_oci8.dll
;extension=php_oci8_11g.dll
Kiedy to zrobimy, należy wprowadzić dokładnie te same zmiany do domyślnego pliku konfiguracyjnego PHP w drzewie serwera Apache. Odpowiedni plik php.ini znajduje się w:
%WAMPPATH%\bin\apache\apache2.2.8\bin\
Ostatnią rzeczą, jaką musimy wykonać przed uruchomieniem serwera będzie ponowne wygenerowanie konfiguracji pakietu WampServer. Na samym początku, zanim znalazłem poprawne rozwiązanie, próbowałem samodzielnie poprawiać kolejne linijki tego pliku, także ostrzegam – jest to kompletnie bezcelowe, bo i tak plik jest w całości generowany na podstawie szablonu.
Jak zmusić WampServer do wygenerowania nowej konfiguracji? Bardzo prosto. Otwieramy plik wampmanager.ini, który znajduje się w głównym katalogu instalacji pakietu i lokalizujemy następującą linijkę:
;WAMPSTARTUPACTIONEND
Kasujemy wszystko, co znajduje się w tym pliku od końca tej linijki do końca pliku. Uruchamiamy serwer, konfiguracja zostaje ponownie wygenerowana i możemy cieszyć się działającym PHP w wersji 5.3.
Podsumowanie.
Dawno nie pisałem nic o tak szczegółowych błędach, chyba oprogramowanie, z którego korzystam, na swój sposób polubiło mnie, albo po prostu wiem, którymi ścieżkami nie chodzić, żeby nie zrobić sobie problemu. Czy tak, czy tak – kolejny problem rozwiązany.
Żeby wprowadzić trochę niepewności oraz zachęcić Was do odwiedzenia mojego blogu za kilka dni powiem, że kolejnym wpisem nie będzie Linkdump. Co więc nim będzie? Niespodzianka. [Hint: Spójrzcie na drzewo kategorii po prawej stronie] ;] Do zobaczenia w kolejnym wpisie!
Warto przeczytać.
Trwa ładowanie…
Wypróbuj Zend Server. Wprawdzie nie jest tak przyjazny jak WAMP, ale posiada najaktualniejszą wersję PHP, czyli 5.3.3. Z tego właśnie powodu uciekłem od WAMPa.
Już chciałem powiedzieć „e tam, pewnie to płatne oprogramowanie”, ale faktycznie, po opisie ze strony Zenda brzmi całkiem ciekawie – przyznam, że wcześniej mało słyszałem o tej możliwości. Dzięki wielkie, na pewno „co najmniej” spróbuję przestawić się na coś nowego.
ZS posiada darmową wersję Community Edition, która w zupełności wystarcza.
Jeśli będziesz instalował na Windows Vista lub Windows 7, będziesz musiał zrobić małą sztuczkę – katalog htdocs przenieść do innej lokalizacji, a następnie utworzyć skrót (mklink) do tej lokalizacji. W przeciwnym wypadku będziesz musiał uruchamiać każda aplikację, która ma pisać do tego katalogu z uprawnieniami administratora.
Korzystam jeszcze z Windowsa XP, także bez problemu, aczkolwiek dziękuję za rozwiązanie problemu zanim się pojawił. W przyszłości mam nadzieję przenieść się na Linuxa, aczkolwiek pewnie i tak z tego wszystkiego wyjdzie Windows 7.
Zend Servera wypróbuję wieczorem, teraz jestem w pracy, więc nie będę się bawił. ;]
Pingback: WAMP: Usuwanie komunikatów o błędach XDebug. « Tomasz Kowalczyk