W przypadku wielu programów ich twórcy chwalą swoje produkty jako działające bezbłędnie, mimo nieustannych prób użytkownika skierowanych w stronę zakłócenia tego błogostanu. O ile zdecydowana część tychże spełnia wspomniane warunki, o tyle kosztem osiągnięcia takiego celu jest głównie poprawność działania wyłącznie w zakresie podstawowych funkcji. Jeśli użytkownik zechce zrobić coś bardziej zaawansowanego - wtedy zaczynają się schody. W dzisiejszym wpisie chciałbym omówić jeden taki problem związany ze stosem WAMP, jakiego sam używam, czyli WAMPServerem.

WAMPServer, PHP: Problem z aktywacją rozszerzenia php_intl.

Problem, na jaki dzisiaj natrafiłem jest krótki i prosty - zechciałem wykorzystać w jednym ze skryptów klasę Normalizer, która pozwala na “normalizację” stringów ze znakami spoza zbioru ASCII do ich bardziej czytelnej formy. Za obecność tejże w kodzie odpowiada rozszerzenie php_intl, które w systemie Windows znajduje się w pliku php_intl.dll.

Narzędzie konfiguracyjne WAMPServera, którego ikonkę możecie podziwiać w ikonce niniejszego wpisu pozwala na bezproblemowe włączanie i wyłączanie poszczególnych rozszerzeń poprzez prosty wybór i kliknięcie na danej pozycji. Wybrałem więc kolejno PHP > PHP Extensions > php_intl, serwer przestał na chwilę działać sygnalizując swój restart pomarańczową ikonką w pasku zadań, aczkolwiek po chwili powinien się załączyć i zaznaczyć to ponownym zielonym kolorem. Tak się nie stało, a ja zostałem zmuszony do rozwiązania kolejnego problemu [co oczywiście uczyniłem z nieskrywaną przyjemnością ;]].

Okazało się, że aby rozszerzenie php_intl zaczęło działać, w miejscu instalacji Apache muszą także znaleźć się biblioteki DLL odpowiedzialne za bibliotekę ICU - International Components for Unicode. W domyślnej instalacji WAMPServera znajdują się one jedynie w katalogu PHP,  a więc w moim przypadku:

%WAMP%/bin/php/php5.3.5
Aby rozwiązać problem, wystarczy skopiować wszystkie pliki DLL rozpoczynające się od fragmentu “icu”:
icudt36.dll icuin36.dll icuio36.dll icule36.dll iculx36.dll icutu36.dll icuuc36.dll
do katalogu /bin Apache, a więc znowu w moim przypadku
%WAMP%/bin/apache/apache2.2.17/bin
Numer wersji [fragment “36”] może się oczywiście różnić w Waszym przypadku, ale nie powinno być to utrudnieniem w wykonaniu zadania. ;] Przez makro %WAMP% rozumiem oczywiście ścieżkę instalacji samego WAMPa.

Dzisiejszy wpis znowu jest spóźniony, aczkolwiek niestety nie miałem możliwości usiąść do niego wcześniej - ilość obowiązków, jaka ostatnio spada na moje ramiona jest dosyć duża i w tej chwili jestem na etapie wypracowywania jakiegoś “sensownego konsensusu”. Zyx chyba dobrze mówił, że z tym Harmonogramem to będą same problemy. ;]