Ispravljanje krive Drine – LAMP i problem sa belinama

63

Prošle noƒái sam izgubio 4h na debagovanje i modifikaciju koda koji je bio ispravan, ali nije radio – a ja sam jedva provalio o ƒçemu se radi. Glavni krivac bio je Windows, a šta se desilo, kako sam otkrio o ƒçemu se radi i kako sam problem rešio, saznaƒáete vrlo brzo :) Naime, razrešenje ove misterije nije išlo gore pomenutim redosledom, pa upravo zato i reših da svoje iskustvo podelim sa ostatkom svet.

Pretprošle noƒái krenuh u realizaciju jednog mog mini WEB projekta. Kako su pitanju XHTML/CSS + PHP/MySQL tehnologije, krenuo sam sa radom u lokalu. Startovah LAMP pa se bacih na izradu baze i back panel-a. Zakljuƒçno sa sistemom za logovanje korisnika, privedoh rad kraju za taj dan (noƒá zapravo) pa sam sve do tada uraƒëeno okaƒçio na server. Probao sam skriptu i sve do tada implementirano je radilo bez ikakvih problema.

Onda prošle noƒái reših da malo sredim kod, formatiranje i komentare, pa sam sve ponovo svuk’o u lokal, sredio i vratio online. Jedina razlika bila je što sam ovog puta radio sa WAMP-om na mašini sa Windowsom. Ništa znaƒçajno nisam menjao što se koda tiƒçe, ali ipak reših da još jednom proverim da li je sve ok. Kad imam šta i da vidim: na svakom fajlu pucaju neke funkcije (2-3 uproseku). Od svega su se najviše bunile sesije (kreiranje i promena podataka). Tu je krenulo 4h pakla sa istra≈æivanjem šta taƒçno ne radi i zašto se od jednom buni, a prethodnog dana je radilo.

Probao sam sve i svašta. ƒåak sam i potpuno promenio sistem za logovanje. Menjao pamƒáenje nekih stvari u cookie umesto u sesiju i svašta drugo što mi je palo na pamet. No na kraju je ipak negde pucalo. Onda reših da sklonim komentare sa poƒçetka fajla, jer sam ƒçitao da neke PHP funkcije moraju biti apsolutno na poƒçetku koda (iako su u demo primerima, ƒçak i u dokumentaciji, radile i ako pre njih ima belina ili komentara). Iz web-editora sam otvorio, izmenio i saƒçuvao svaki fajl ponaosob, posle ƒçega je, na moje zaprepašƒáenje, sve ponovo proradilo bez ikakvih grešaka. U neverici sam ponovo vratio komentare, kako bih bio siguran da je do toga, no i dalje je sve radilo. Nekoliko minuta sam gledao u kod i ƒçeškao se po glavi dok se nisam setio sliƒçnih problema jednog prijatelja. Branku je pucao IE7 prilikom izvršavanja JavaScript-a pisanog na Windows platformi, pa sam pomislio da i ovde CR-LF pravi probleme.

Ovu teoriju sam eksperimentalno dokazao na sledeƒái naƒçin: Prvo sam sve fajlove upload-ovao preko FTP-a (text-modom) gde sistem autoamtski sreƒëuje EOL. Pokrenuo sam skriptu sa servera i nije bilo nikakvih grešaka. Zatim sam iste fajlove arhivirao i ponovo upload-ovao (ovaj put kao jednu arhivu, binarnim modom) pa otpakovao na serveru. Prilikom pokretanja skripte, ponovo su se javile misteriozne greške o nemoguƒánosti pokretanja sesija.

Suma sumarum: Ukoliko se bavite WEB development-om i radite pod Windows-om, imajte na umu da je veƒáina WEB servera pod nekim UNIX-olikim operativnim sistemom (Linux, BSD, Solaris, MacOS…) te da je preporuƒçljivo da svoje fajlove spakujete u odgovarajuƒái format kako ne bi dolazilo do ovakvih problema. Sa druge strane, ako radite u Linux okru≈æenju, a koristite komponente koje su razvijala treƒáa lica, obavezno proverite da li su sami fajlovi saƒçuvani na odgovarajuƒái naƒçin. Na taj naƒçin uštedeƒáete vreme i sebi i drugima ukoliko doƒëe do ovakvih problema.

* tekst orignalno objavljen na adresi:
http://www.plagosus.net/blog/programiranje/ispravljanje-krive-drine/