A minap egy PHP-ban írt alkalmazást kellett áttelepítenem egy korábban általam felügyelt környezetből, egy másik környzetre, amelynek a felügyeletét már nem én látom el. Az alkalmazást én írtam. Mind az eredeti környezet, mind az új környezet Windows Szerver, és MS SQL adatbázis kezelőt jelentett.
A különbségek a két környezet között az alábbiak voltak:
Eredetileg: Standalone XP, Apache 2.0.x, MS SQL 2000, PHP 5.2.4, Modul üzemmódban
Új környzet: Windows 2003 Server, IIS 6, MS SQL 2005 és végül PHP 5.3.2.FastCGI üzemmódban
Ami simán ment:
- A PHP alkalmazások természetesen csont nélkül átmentek az új környezetbe
- A régi rendszeren backupoltam az adatbázisokat, majd az új rendszerbe ugyanolyan néven behúztam őket.
- A PHP.ini-ben be kellett állítani
- a session elérési útját,
- az error_log fgájl helyét
- az smtp szerver és user paramétereit
- a php_adodb.dll elérhetőségét
Buktatók voltak:
- A PHP 5.2 sorozatban az MSSQL hozzáférés működik, mert a disztribúció része, a PHP 5.3.0-tól nincs a disztribúcióban a php_mssql.dll. Megoldás lett: vissza kellett térni a PHP 5.2. utolsóra
- Az IIS környezet másképpen adja vissza a $_SERVER tömbben az adatokat. az alkalmazás több helyen a saját fájlrendszerrel hivatkozik a fájl helyére, abból számít webes url-t. Megoldás lett: Ezeket ki kellett debuggolni, mivel a \\ és a / különbözőképpen jelenik meg Apache és IIS alatt.
- Mivel az alkalmazás működés közben ír temporary fájlokat a webszerver fájlrendszerébe, ezért jogosultsági problémák is voltak, ugyanis a PHP egy user nevében fut, akinek nem feltétlenül vannak jogosultságai bizonyos könyvtárakra. A kérdéses könyvtárakra Read-Write-Modify jogokat kellett adni.
- Az új helyen a webszerver és az MS SQL külön vason fut, ezért és egyéb okokból az adatbázishoz való csatlakozáshoz szükséges ADODB connection stringet is át kellett írni. Megoldás lett: Ez a weboldal, SQL Connection String, ahol különböző szerverek connection stringjeit lehet megtalálni.
- Érdekes módon az eredeti alkalmazásban a PHP oldalak ASP tag-gel működtek (<? ?>) és az új környezet már nem engedte ezeket
Ez az egyszerű feladat tisztán 3,5 óra alatt lezajlott.