Migrálás: PHP4->PHP5, Postgresql7.4.7 - >8.4 stb.

Van egy (nem általam írott) PHP4 progi (némi névjegyzék és esemény napló) ami egy postgre -ben tartja az adatokat. Természetesen egy jó kis loginnal kezdődik, és ha az sikeres tovább lép az eseménylistába. Mindez anno amikor készült Debian 3.1 - most Debian 5.0.5 stable -ra próbálom felépíteni (új gép, mai hardware, a régi alig megy rajta - LFS).
Feltelepítettem minden szükségest: apache2, php5 (azt hiszem mindennel ami kell hozzá) és a postgreSQL -t. Betöltöttem az adatbázist (pg_dumpall -al készült mentés, template+tables+userek). Betöltöttem az /var/www alá a php fájlokat. Megjelenik a jó kis login, beviszem az érvényes felhasználó/jelszó párost és ... nem történik semmi :(
Az apache2/error.log a design.css fájlt hiányolja - ilyen nem is volt, de most csináltam neki egy üreset (touch). Az apache2/access.log kiírja azt hogy próbálkoztam egy jót és milyen böngészővel.
A postgresql/postgresql-8.3-main.log csak annyit mutat hogy kész fogadni a csatlakozásokat (amikor rosszul volt beállítva akkor jelezte hogy hibás próbálkozás volt).
Nem lép tovább a cucc - szerintem most már a PHP beállításokkal lehet a baj, a php4 -hez való meg van de, azzal nem tudom mit kezdjek :(
Mit lehetne megnézni?

Hozzászólások

Sztem itt az UTF8-as kódolással lehet a baj. Megnézted a régi adatbázis milyen kódolással volt? Esetleg az is lehet, hogy a locales-ba felveszed a pl hu_HU.ISO-8859-2 ISO-8859-2 -t/squirrelmail magyarításához szükséges pl./

Elsőre ilyenek jutnak eszembe:
- kapcsold be a zend.ze1_compat_mode vagy hasonló nevű opciót
- állíts be php hibanaplót E_ALL -al a vhostnak külön file-ba
- register_globals ellenőrzése, hátha voltak olyan "sikeresek" és a On beállításhoz írták a site-ot
- későbbi bónusz opció, hogy a pgsql-nek query logot állíts be (postgresql.conf)
- van egy session.bug_compat dolog is, itt elsőre azt mondd meg neki, hogy jelezzen ha talál ilyet, de ne kapcsold be

Ezek fényében aztán már okosabb leszel szerintem. A saját tapasztalat az, hogy a php4-es appok ha a compat mód be van lőve akkor általában mennek.

Már megvan :)

Lame kérdés, a zend.ze1_compat_mode mint opció az a php configra vonatkozik? Ráadásul, úgy látom van itt cgi/, cli/ és apache2/ konfiguráció - mindegyikben azonosnak tűnő alap beállító állomány.
Az E_ALL -al kísérletezem, sőt a programban is van debug flag, amire mindenféle okos dolgokat ír ki. Kár hogy a PHP -hoz szinte semmit nem értek :( A C tudásomat és a józan eszemet használnám (ha még lenne).

* Én egy indián vagyok. Minden indián hazudik.

Köszönöm andrej_ -nek a tippeket - mindent beállítottam amit említett.
Az első számú gondot a postgre okozza, mivel a felhasználó/jelszó páros azonosítására üres az eredmény - még silabizálnom kell a kódot - de szerintem itt valami jogosultsági gond lesz a felhasználói tábla környékén.

* Én egy indián vagyok. Minden indián hazudik.

1) A php kódból elvileg kiolvasható az az sql select ami a jelszó ellenőrzésekor lefut. Meg kell próbálni a postgresben lefuttatni. Esetleg a postgres logból is ki lehet olvasni.
2) Ellenőrizni kell, hogy a régi rendszerben ki volt az adatbázis tulajdonosa, mi az adatbázis kódolása. pl valahogy így:
psql dbneve -U postgres -h localhost -l
3) Meg kell nézni a postgres logját mit ír a lekérdezésekre, illetve a megtalált userről akar-e valamit beírni az adatbázisba és az sikerül-e neki.
4) Egyáltalán sikerül-e csatlakoznia a php-nek a postgreshez? Fel van-e telepítve a postgres php modulja. Esetleg ezt phppgadmin-nal ellenőrizni.

Jártam ezen az úton. Mint említettem egy pg_dumpall mentésből beillesztettem az adatbázist. A mentésnek megfelelő user/password párosok működnek (legalábbis látszólag) azaz psql -el be tudok lépni és SELECT -el beletudok nézni a táblákba. De a php kód nem tud túljutni a login -on.
A következő SQL utasításokkal nem tudom mit is csinálnak:
SELECT password as pass FROM team_members WHERE username = '".$_REQUEST['username']."' and password = md5('".$_REQUEST['password']."')";
...
SELECT team_members WHERE password = '".$_REQUEST['password']"' and act = True;
...
Ha ezeket (a megfelelő behelyettesítésekkel) beviszem a psql -ből akkor "0 ROWS" kapok :(
Azt sem igazán tudom mit kéne kapnom ezekre az utasításokra - a Postgre leírásokban ilyen SELECT parancs formát nem tudok beazonosítani "SELECT password as pass ..." - sűrű sötétség :(
Így nem tudom mi is a baj - a Postgre alapbeállításai vagy az adat importálásnál jelzett néhány hibát/gondot (valami gondja van a ROLE -okkal).

* Én egy indián vagyok. Minden indián hazudik.

Hát lehet el kéne kezdeni játszani a dolgokkal.

SELECT * FROM team_members;
ad valamit?
SELECT * FROM team_members WHERE username='xy';
....ésígytovább.
és kideríteni, hogy hol esik el. De egy nagy programnál azért mindegyiket átírni időbe tellhet.

### ()__))____________)~~~ ################
#"Ha én veletek, ki ellenetek?"#1000H/UbuFb

Tudomásom szerint a php4 olyannyira nem "kompatibilis" a php5-el, hogy csak na! Ha valaki hallott olyan eszközről, eljásrásról, amivel egy php4-ben megírt programot egyszerűen, gyorsan lehet migrálni php5-be, kérem ne kíméljen!
------------------------------------------------
A legtöbb ember azt hiszi, csak a gyomra üres...

A legtöbb PHP4 "alá írt" honlap simán elindult PHP5 alatt is. Legalábbis nálam, és 200+ oldalt figyelembe véve.

Inkább a register_globals szokott godnott okozni sajnos.

Szerintem inkább az az általános, hogy nem használják a PHP5 adta lehetőségeket. A PHP 5.2.x váltása 5.3.x-re macerásabb ha pl. tele van a kód eregi* fv. használattal (PHP 5.3-tól deprecated). IMHO.

Annyit tudok hozzátenni a topikhoz, hogy hasonló gondom volt nekem is. Egy oldal, ami régen (5++ éve kb) íródott, és gykorlatilag az egyetlen site a sok hostolt közül, ami postgre-t használ.

Fel szerettem volna tenni az új postgre-t, hogy legyen friss, meg minden. Sehogysem bírtam rávenni, hogy jól menjen az adatlekérdezés. Hozzátartozik, hogy nem nagyon szoktam postgresql-t simogatni.

A végén feltettem a régi (talán 7.3-as) postgre-t, azzal rendben megy. Tudom, próbálkozhattam volna még, de időben így jobban megérte, bajt meg nem okoz, mert semmi más nem használja.

Lehet, hogy nálad is segít, ha régebbi verziót próbálsz.

Igen, nekem nem volt különösebb gondom az átállással, viszont az oldalhoz a "register_globals On" kellett, persze vhost szinten kapcsoltam be csak. Véleményem szerint simán próbáld meg PHP5 alatt, inkább a Postgre-vel variálj, kivéve, ha megtalálod mi ütközik, mert mindenképp jobb lenne az újabb verzió.

Ja, és még egy! Postgre terminálból győződj meg róla, hogy az adatok tényleg bekerültek-e a dumppal, mert nálam már ott elbukott a dolog, a szerkezet létrejött, de adat nem ment be. Persze dump után rögtön próbálkoztam, eredmény meg nem volt, mert a tábla üresen maradt.

Köszönöm a sok ötletet :D
Az adatbázis valamilyen szinten létrejött - bele kellene nézni mondjuk egy pg- vagy phppg -adminnal hogy biztos legyek.
psql konzolból megnéztem, tudtam táblákat listázni, de pg_dumpall -al is próbálkoztam (miután beöntöttem az adatot) - az is jónak nézett ki.
Viszont kiderült hogy elavult jelszóval próbáltam belépni :(
Amikor meg lett az igazi akkor már belépett, de ennyi index hibát már rég láttam mint amit kiköpött, lehet hogy lehetne tovább gyúrni, de egyenlőre leteszek róla :( Másképp oldom meg ezt a dolgot - régi vas, régi rendszer - Woody :) Majd ha lesz rá több időm és valaki igényli akkor lehet visszanyúlni.

* Én egy indián vagyok. Minden indián hazudik.