PHP alkalmazás migrációja másik szerverre

Default book

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.