Wiele razy pojawiał się temat tego, jak tego dokonać, to znaczy jak umożliwić odpalenie tych 2 wersji php na jednym serwerku.
Jak się okazuje, problem nie jest łatwy, i choć ponoć jest kilka sposobów na jego rozwiązanie - nie są to rzeczy łątwe do zrobienia.
W związku z tym bardzo ucieszyło mnie pojawienie się pakietu, który omija ten problem odrobinę inaczej - tj. na zasadzie przełączania się na tą drugą wersję php.
Umiejętność taką posiada pakiet http://www.wampserver.com/en/index.php
(składający się domyślnie z Apache 1.3.31, php 5.0.0 and MySQL 4.0.18.) po zainstalowaniu dodatku http://www.wampserver.com/en/add-ons.php
Pakiet jest przeznaczony dla użytkowników windowsów, i sprawdza się bardzo dobrze jako serwerek to testowania własnych skryptów, szczególnie w okreśie przejściowym z PHP4 na PHP5.
Gorąco polecam
Ciekawa koncepcja z tym serverem...
Ja natomiast zastosowałem się do porad FiDO z http://forum.php.pl/index.php?showtopic=7802 tematu. Działa jak burza: Apache/2.0.49 (Win32) php/4.3.7 php/5.0.0RC3
Nurtuje mnie tylko pytanie jak to jest z instalacją dwóch wersji php pod jakimś systemem Unix-owym. Ja nigdy nie próbowałem, ale niedługo będę musiał i zastanawiam się czy ktoś nie ma jakichś doświadczeń.
Jojo: tez za jakis czas bede sie podejmowal tego wyzwania, gdybys byl pierwszy i Ci sie uda, to napisz, w przeciwnym wypadku ja napisze
DevY: mozesz mi jakos po krotce opisac na jakiej zasadzie dziala ów przełączanie miedzy wersjami php ? Niezbyt mam mozliwosc sprawdzenia na kompie przy ktorym siedze tego pakietu, a na dyskietke to on raczej nie wejdzie..
---edit:
Jojo: udalo mi sie Robilem analogicznie do tego co napisalem tutaj http://forum.php.pl/index.php?showtopic=7802&view=findpost&p=121363
Oczywiscie pomijajac instalowanie uslugi i inne windowsowe rzeczy. Nie trzeba sie na linuxie martwic o sciezki do php.ini. Ja skompilowalem sobie oba pehapy w osobnym katalogu (/usr/local/php4 i /usr/local/php5), kazdy czyta php.ini ze swojego wiec nie trzeba sie o to martwic. Pozatym zadnych innych cudow nie robilem, zadzialalo odrazu.
Na linuxie(rh fedora) php4+php5 mozna tez odpalic w pare sposobow. np. dwa apache kazdy na innym porcie lub php5 wkompilowany jako modul cgi .Ja chcialem aby pliki z rozszerzeniem .php byly kompilowane przez kompilator php4 , .php5 -> php5.
Skomilowalem php5 jako cgi i smiga na jednym apachu php4 i php5.To chyba najlepsze rozwiazanie jakie udalo sie znalesc
Pozdrawiam
To jest najprostsze rozwiazanie ale ma swoja wade.. nie mozna w latwy sposob sprawdzic czy dany skrypt lub nawet caly serwis zadziala na php5, musialbys zmieniac rozszerzenia wszystkich plikow. Rozwiazanie z dwoma osobnymi portami wydaje sie byc do tego lepsze, poniewaz przechodzenie miedzy wersjami php staje sie banalne i szybkie.
Witam.
Stanąłem przed tym samym problemem ale na Apache'u postawionym na FreeBSD w wersji 5.x - Apache z lini 1.3.x.
Co ciekawsze chciałem to zrobić nie w taki sposób, że PHP4 będzie chodziło jako moduł a PHP5 jako CGI - zamiana portów też mnie nie satysfacjonowała... chciałem aby obydwie wersje php chodziły jako moduł(ze względu na zmienne środowiskowe).
Poszperłame w sieci i znazłem http://www.digitalsandwich.com/archives/14-PHP5-and-PHP4-Running-on-SAME-apache-server.html w jaki sposób osiągnąc to co chciałem zrobić. Niestety moje męki nic przyniosły skutku chociaż robiłem wszystko zgodnie z opisami...
Na czym polegał sposób - otóż podobnie jak FIDO - z tym że korzystając z dobrodziejstwa UNIX'a i możliwości szybkiej kompilacji źródełek - pozmieniałem mime-typ PHP5 z x-httpd-php na x-httpd-php5... podobnie zrobilem z php_value, php_admin_value itd... sama zmiana zadzialala, gdyz udalo mi sie odpalic serwer www ktory parsowal pliki .php5 za pomoca x-httpd-php5 - ale jak dodam modul od PHP4 wszystko zaczyna sie sypac... Moze ktos z was probowal to osiagnac pod systemem Unixowym i wie jak temu zaradzic, lub co moze byc przyczyna bledow - dodam ze serwer potrafi sie uruchomic po zahashowaniu linijek AddModule i pozostawieniu LoadModule - ale nie parsuje plikow ani .php ani .php5.
Wpadlem tez na pomysl aby zamiany mime-type dokonac takze dla PHP4 i dzis bede probowal to zrobic - napsize jak mi poszlo...
dzieki za kazda wskazowke
pozdrawiam
anas
witam ...
no i mam problem ... podobno wszyscy wiedzą jak zrobić php5 jako cgi tylko chcą jako moduł ... otóż nie wszyscy ... nie wychodzi mi w żaden sposób ... kawałek z mojego httpd.conf
Musisz dodac ScriptAlias'a
witam ...
myślałem że to alias do patha do php ... dodałem ale nadal nie działa ... wyskakuje dialog sciągania pliku ...
pozdrawiam
Nie zgubiles gdzies AddType'a po drodze? Bo jego brak dla danego rozszerzenia moglby powodowac probe sciagniecia pliku...
U siebie sprawdzalem na takim cfg:
No ciekawe.. nie powiem..
Sam PHP5 ale na application/x-httpd-php5 tez nie dziala?
Co do wersji to jak widzisz mam prawie identyko.. jutro jak znajde czas to zrobie upgrade apacha, zeby byla pelna zgodnosc i wtedy jeszcze raz zobacze.
Aha.. jeszcze jedno.. zajrzyj do error.log'a od apacha zaraz po wywolaniu w przegladarce pliku .php5, moze bedzie tam cos co bedzie moglo pomoc.
witam ...
to był sam php5 ... i działa jako cgi ale jak tylko zmienie na application/x-httpd-php5 to przestaje :| ... już nie wiem co zrobić ... a miało być takie strasznie łatwe ...
pozdrawiam
No bo to jest latwe.. specjalnie zainstalowalem sobie nowego apacha (czyli juz wszystko w takiej samej wersji jak Ty masz), dodatkowo wrzucilem domyslny config apacha z httpd.conf.default, zeby nie bylo, ze cos mialem dziwnego wykombinowanego. Jedyne co zmienilem to DocumentRoot'a oraz dodalem te 3 linie do php i dzialalo zarowno na x-httpd-php5 jak i na domyslnym typie.
Sprawdzales logi czy nic tam nie ma ciekwego ?
witam ..
nieeeeeeeeeeee no nie wiem co jes ... chyba magic ... albo config który przychodzi z apachem jest uwalony albo już nie wiem co ... zrobiłem tak jak FiDO ... wziąłem default.conf dopisałem moduł z 4 i path do 5 jako cgi i poszło za pierwszym razem ... szkoda że wywaliłem ten zły conf ... chciałbym się dowiedzieć co robiłem źle ... thx za pomoc FiDO już smiga ...
pozdrawiam
@Odnosnie montazu na platformach Linux
juz duuuzo czasu minelo od chwili kiedy ten temat zaistnial ale mysle ze z problemem dalej ludzie sie borykaja, mnie udalo sie to zrobic na jednym apache2, bez zdanej zabawy z typami mime, kodem zrodlowym, bez zgrzytow. niewiem jak to jest, czasem poprostu 0,5 na stole wszystko upraszcza . Niedlugo zamierzam wszystko spisac w jedna calosc i zarzucic tutaj na forum serwerowym - mam tutaj na mysli kompletna instalacje apache2+CGI+php4+php5+mysql+postgresql. A tymczasem borem lasem podam moze to jak udalo mi sie osiagnac to czego chcialem :
Hej.
Jezeli chodzi o to rozwiazanie - zrobic to mozna bez problemu, ale raczej borykamy(lub borykam) sie ze zrobieniem tego jako dwa moduly... w czym rzecz, a no w tym, ze chodzi nie tylko o zmienna $_SERVER, ale takze wykonywanie skryptow z prawami uzytkownikow... kilka rzeczy sklada sie na to, ze wskazana na serwerach u mnie w firmie jest wersja jako modul, nie w otoczce CGI.
Udalo mi sie to osiagnec poprzez przekierowywanie wewnetrzne PROXY + mod_rewrite do wykrywania wywolan skrypto z roszerzeniem .php5... -> ale nie dziala to rewelacyjnie - chociaz dziala.
Kolejna sprawa to czy nie zastanawial sie ktos z was jak np. dac userowi mozliwosc przelaczania sie pomiedzy wersjami php dla wybranych VHOSTow? Chodzi mi o to, aby np. user w htaccess okresla z ktorej wersji php skorzysta, albo lepiej, na sztywno w konfiguracji vhosta to ustalac - oczywiscie jako moduly, a dwa zeby sie nie gryzly, na porcie 80 all rzecz jasna
pozdrowka
anas
@anas : zaglebiam sie wlasnie w makulature : http://httpd.apache.org/docs-2.0/mod/core.html#ifdefine
- niewiem, czy tego moze probowales ? bo w sumie mialo by to na pierwszy rzut oka rece i nogi - jak rozszerzenie jest php lub php4 to zaladowywuje sie modul php4_module a jak php5 no to php5_module, tylko skolei jeszcze troszeczke za bardzo niewiem jak sie w to konkretnie wgryzc ... hmm
czesc. ja tez probuje zrobic na 1 apache php 4.x i 5.x na raz. chcialem zrobic 2 moduly, ale nawet jak zmienialem source php 4.x odpowiednio na inne x-httpd- itd to mi sie apache wieszał. ale nie o to chodzi. skoro nie da sie 2 modułów to mam php5.x jako moduł a 4.x jako cgi wiec trzeba.
uprzedzam ze 1 raz instalowałem php jako cgi...
AddType application/x-httpd-php54php4
ScriptAlias /php/ "/usr/local/php4bin/"
Action application/x-httpd-php4"/php/php"
wszystko ładnie ... ale serwer zwraca dla .php4 internat server error 500. Czy jest cos co powinienem wiedziec o uruchamianiu php jako cgi zeby to zaczeło działac?
log apache mówi
premature end of the script headers: /usr/php4-cgi/bin/php
z góry dzieki za pomoc.
Witam.
Ja problem postawienia php 5.1.4 i php 4.4.2 na Apache 2.2.2 (WindowsXp) rozwiązałem za pomocą VirtualHostów
1. Edytujemy plik hosts w katalogu c:\WINDOWS\system32\drivers\etc\ i dopisujemy wartość:
dla użytkowników Gentoo polecam http://www.gentoo.org/proj/en/php/php4-php5-configuration.xml
Jak zainstalować PHP4 jako CGI, a PHP5 jako moduł apache? W httpd.conf mam coś takiego:
Witam, czy da się jakoś zrobić tak, żeby dla wszystkich plików w folderze TribalWars ładował się PHP4, a dla pozostałych php5?
Da się.
Odpowiedziałem na pytanie.
A możesz jeszcze powiedzieć jak?
Zależy od konfiguracji obu wersji PHP.
Na pewno trzeba przestawić via htaccess, ale co: patrz wyżej.
tylko, że ja mam Linuxa
a gdzie jest?
Weź sobie zainstaluj Lighttpd, PHP uruchom w trybie FastCGI i wtedy możesz przypisać poszczególne instancje do odpowiednich domen. Ja w ten sposób mam jednocześnie uruchomione na jednym serwerze PHP 5.2, 5.3 oraz 6.0-dev, a wybieram sobie, wpisując po prostu odpowiedni adres URL w przeglądarce, np. projekt.php52.lh - dany projekt odpala się w PHP 5.2, projekt.php53.lh - ten sam projekt odpala się w PHP 5.3. Domeny możesz sobie zrobić w /etc/hosts, a podpiąć je za pośrednictwem wirtualnych hostów.
http://wiki.arch-linux.pl/wiki/Lighttpd#PHP - tutaj masz przykład konfiguracji Lighttpd, FastCGI i rozmnożenia PHP do dwóch różnych instancji.
A czy da się uruchomić dwa razy apache na różnych portach?
Powinno się dać, przynajmniej nie widzę żadnego technicznego powodu, by takie coś było niemożliwe. Skoro da się uruchomić dwa różne serwery WWW na różnych portach (np. jak pisałem w Javie servlety, to uruchamiane były niezależnie od Lighttpd), to dwa takie same też nie powinny sprawić problemów ze swojej własnej strony. W Linuksie musisz jedynie uważać na skrypty startowe demonów - będziesz je musiał rozmnożyć i popatrzeć, czy prawidłowo rozróżniają oba uruchomione Apache, gdyż inaczej będziesz mieć problemy z ich uruchamianiem i zamykaniem. Chodzi głównie o zapisywanie numerów PID, a w przypadku Apache'a - wykorzystanie apachectl oraz jednocześnie jego zachowanie w tym samym przypadku. U mnie (Arch Linux) wykorzystywany był programik "pidof" który pobierał PID na podstawie nazwy binarki i to rodziło duże problemy, bo obie uruchomione wersje miały tę samą nazwę pliku wykonywalnego. Dodam, że nawet dowiązanie symboliczne nie pomogło i musiałem zmienić procedurę tak, by analizowała grepem i awk-iem wyciąg z komendy ps. Co i jak, też masz podane w tych linkach z mojego poprzedniego posta, tylko musisz to sobie przerobić na Apache'a.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)