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</blockquote> 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</blockquote> 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!