This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!

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!