Uno degli aspetti vincenti delle tecnologie web è la loro capacità di poter essere accessibili (per lo meno in linea teorica e almeno nelle funzionalità principali) a prescindere dalla piattaforma tecnologica utilizzata. Un'applicazione web, combinazione di tecnologie client-side e server-side, ha il grandissimo vantaggio di poter essere sfruttata (se il lavoro del programmatore è stato di buon livello) da ogni dispositivo che può accedere ad Internet tramite l'intermediazione del browser: hardware e soprattutto sistemi operativi non dovrebbero più essere delle barriere.
Lo sviluppatore ha così spesso l'impressione di poter quasi ignorare le caratteristiche tecniche della macchina utilizzata se si avvale di tecnologie standard come HTML, JavaScript, PHP e MySQL.
àˆ noto altresì che il lato client può riservare brutte sorprese dal punto di vista della compatibilità : ancora non si è raggiunta la piena uniformità (se mai si raggiungerà ) per quanto riguarda fogli di stile e scripting. Il lato server ci fa sentire più tranquilli, ma in alcuni casi la guardia va comunque tenuta alta.
Se stiamo sviluppando un'applicazione o personalizzando un CMS in locale tramite strumenti come XAMMP o MAMP ci stiamo affidando a delle versioni specifiche di PHP e MySQL che potrebbero non essere identiche a quelle effettivamente presenti nell'hosting dove andremo a caricare il frutto del nostro lavoro.
Per fare solo un esempio, se non abbiamo a disposizione PHP versione 5.3 non potremo far uso di funzioni anonime, e questo ovviamente impedirebbe il buon funzionamento di alcuni script.
Un altro problema riguarda le impostazioni e le variabili d'ambiente che anche a parità di tecnologia possono causare problemi non sempre facilmente diagnosticabili. Per fare un esempio preso stavolta da MySQL, la variabile di sistema lower_case_table_names altera il comportamento del software rispetto all'importazione e all'esportazione di database nei quali ci siano tabelle con caratteri maiuscoli, convertendoli o meno in caratteri minuscoli. Potrebbe essere quindi utile confrontare almeno il file php.ini e le variabili di MySQL (ad esempio con il comando SHOW VARIABLES) delle diverse macchine che dovranno far girare, in fase di test e in fase di produzione, le nostre applicazioni.