Nie samym Microsoftem programista żyje. Na Linuxie trzeba było zainstalować PHP 5, tak by się zgrał z Apache i MySql. Cały problem polegał jednak na tym, że na serwerze Apache był skonfigurowany z PHP 4 uruchamianym jako moduł. Na dodatek PHP 4 nie mogło być zamienione na PHP 5, bo były pewne strony, które wymagały starszej wersji PHP. No więc po kolei:
INSTALACJA PHP 5
- Najpierw ściągnąłem php w wersji źródłowej
- Rozpakowałem go
- Pora na konfigurację niezbędną do instalacji:
- Ponieważ PHP 4 współpracuje już jako moduł Apache, to należy wskazać, że teraz PHP ma pracować jako CGI. Ponieważ chciałem, aby php współpracowało z MySQL, a PHP 5 nie zawiera już w sobie bibliotek mysql, trzeba było przekazać opcjami informację o tym, gdzie znajduje się mysql:
./configure –prefix=/usr/local/php5 –exec-prefix=/usr/local/php5 –program-suffix=5 –enable-force-cgi-redirect –enable-discard-path –with-mysql=/usr/local/mysql - Potem pozostaje skompilować php 5:
make - i zainstalować
make install - W moim przypadku PHP trafia do katalogu /usr/local/php5. Php potrzebuje jeszcze pliku php.ini. Z katalogu z rozpakowanymi źródłami można przekopiować plik php.ini-production do katalogu /usr/local/php5/lib/ z nazwą php.ini. To jest domyślne miejsce, gdzie php szuka pliku konfiguracyjnego.
- Z PHP to by było na tyle
KONFIGURACJA APACHE
- Apache ma plik konfiguracyjny httpd.conf. Znajdziesz go tam, gdzie zainstalowałeś Apache
- Należy wskazać, że serwer może uruchamiać skrypty z określonej lokalizacji, w której znajduje się nowe PHP. W tym celu w pliku dospisałem linijkę:
ScriptAlias /local-bin/ „/usr/local/php5/bin/” - Ponieważ php5 ma się uruchamiać tylko w niektórych stronach, należy jakoś wskazać, czy uruchamiać ma się php4, czy php5. Można np wykorzystać do tego rozszerzenie plików. U mnie jednak obie wersje używają php, więc konfiguracji trzeba było dokonać na poziomie konfiguracji katalogu, dlatego:
- W katalogu głównym stron www założyłem plik .htaccess i wpisałem do niego następujące linijki:
AddHandler application/x-httpd-php5 .php
Action application/x-httpd-php5 /local-bin/php-cgi5 - Pierwsza z nich mówi, że jeżeli serwer otrzyma żądanie dotyczące pliku z rozszerzeniem php, to powienien potraktować jego zawartość jako application/x-httpd-php5 (przy czym jest to tylko wymyślona umowna nazwa)
- Druga linijka mówi, że obsługując żądanie application/x-httpd-php5 należy uruchomić program CGI /local-bin/php-cgi5.
- Zapis ScriptAlias (z kroku 2) tłumaczy z kolei, że /local-bin/ należy zamienić na /usr/local/php5/bin/
- W efekcie, kiedy użytkownik poprosi o plik .php zostanie uruchomiony program /usr/local/php5/bin/php-cgi5 i wykona ten skrypt.
Po zmianach w httpd.conf należy restatować Apache np wykonując komendę
apachectl gracefulZmiany w .htaccess nie wymagają restartu serwera, są obserwowane przez serwer na żywo.
PRZYDATNE
W httpd.conf można kazać logować informacje o błędach wykorzystując dyrektywę ErrorLog . Można więc w definicji VirtualHost dopisać linijkę
ErrorLog /tmp/error.loga wszelkie błędy będą „na żywo dopisywane do tego pliku. Aby zmiany te widzieć od razu na ekranie można w osobnym okienku wykonać polecenie
tail -f /tmp/error.logU mnie bardzo się to przydało, bo np. kiedy w .htaccess umieszczałem dyrektywę <Directory>… otrzymywałem komunikat:
.htaccess: <Directory not allowed here
Podobnie gdy nie w tym pliku umieściłem ScriptAlias komunikat mnie o tym poinformował:
.htaccess: ScriptAlias not allowed here
Chociaż łatwo mi to nie przyszło, dawno już przy tym nie dłubałem, to jednak kiedy wszystko zaczyna działać, to daje to duże zadowolenie i taki delikatny smaczek „nie wyklikiwanych rozwiązań”. Ach… kiedyś to były czasy, wszystko w shellu, może z czasem w… PowerShellu:)