Ispravljanje krive Drine – LAMP i problem sa belinama / plagosus / blog

Ispravljanje krive Drine – LAMP i problem sa belinama

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 icon smile Ispravljanje krive Drine – LAMP i problem sa belinama 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.

Podeli sa prijateljima...facebook Ispravljanje krive Drine – LAMP i problem sa belinama0twitter Ispravljanje krive Drine – LAMP i problem sa belinama0google Ispravljanje krive Drine – LAMP i problem sa belinama0linkedin Ispravljanje krive Drine – LAMP i problem sa belinama0

10 Responses to “Ispravljanje krive Drine – LAMP i problem sa belinama”

  1. Nix says:

    Close the Gates of Hell, use Linux :)

    • brankko says:

      Ma i tad je problematicno ako koristis neki JS koji je kuckan pod Win… Uvek treba da se proveravaju tako te debilozne stvari. Secas se da smo nas dvojica onog dana izgubili sat vremena da bi provalili da fali tacka-zarez.

    • Marko Šutija says:

      :) Preporučujem vam da koristite PHP Designer, sa njim zaista nisam imao takvih problema. Naravno u bilo kom editoru ipak kao default vrednost treba postaviti UTF-8. Što se tiče bagova opšte poznatih u Windowsu oni su naravno samo prisutni u nakaznom IE-u i to u svim verzijama.

      • brankko says:

        Nije prob ni sa windowsom ni sa editorom, vec sa LF-ovima i FTP transferom koji ih automatski prilagodjava ciljanom OS-u… osim kad se fajlovi prebace kroz ZIP arhivu pa se to ne odradi… A glupi PHP to ne skapira… kao sto nikada nece kapirati ni Unicode kako treba itd… No sve su to stvari sa kojima zivimo :)

  2. Nix says:

    Close the Gates of Hell, use Linux :)

  3. Aleks says:

    Na greskama se uci, ali na ovakvim problemima ce gube zivci :)

  4. SadClown says:

    Fuck… kucam ti komentar na onoj drugoj lokaciji, više od pola komentara strada… I tek onda vidim da si ga objavio i ovde :D

    Elem, headeri ne smeju da se šalju ako je bilo nekog izlaza pre toga. Smeš da kodiraš do mile volje, ali da ispisuješ nešto (ili da imaš čist html van php tagova) ne smeš. Sesije takođe šalju headere.

    E, meni se dešavalo da mi tako baguju sesije i šta sam otkrio – otvorim php fajl u nekom "bogatom" tekst editoru (Word ili OpenOffice Writer) i vidim pre početnog <?php taga neke kukice i kvačice koje se inače ne vide. o_O Ne znam odakle se one stvaraju… U svakom slučaju, izbrišem ih tako i onda sve radi kako treba…

    Sad, rekoh da ne znam odakle se one pojavljuju, ali imam neki osećaj da je to do text/code editora, a ne do samog OS-a ili platforme (dešavalo mi se i na Windowsu i na Linuxu, ako se dobro sećam)… Moguće i da grešim…

    • brankko says:

      Te stvari pre teksta se stvaraju usled UTF-8/ASCII konverzije jer Unicode dokumenti na pocetku imaju par (3 cini mi se) bajta za oznaku da fajl nije cist ASCII tekst nego da je kodirano drugacije (iz istorijskih razloga).

  5. Neven says:

    Iskreno, ja pod Windowsom nikad nisam imao takav problem (a cesto radim sa Linux serverima u produkciji). U pitanju je verovatno editor koji koristite i nacin na koji on tretira kod. Takodje ne zaboravite BOM da iskljucite iz editora. Preporucujem Komodo Edit.

  6. [...] PHP fajl je fajl (ili datoteka) jednostavnog tekstualnog (plain text) tipa. Za programiranje u PHP-u nije vam neophodan nikakav skup program niti razvojno okruženje. Dovoljan je najjednostavniji tekst editor kao npr: Notepad, Gedit, Krite, vi… PHP kod unutar fajla počinje i završava se punim <?php tagovima i izbegavajte sve skraćene verzije. Takođe, ako u falu imate samo PHP kod, zatvoreni ?> tag nije neophodan i preporučuje se njegovo namerno izostavljanje kako ne bi dobijali bespotrebne beline koje mogu stvoriti velike probleme koji se teško otkrivaju. [...]

Leave a Reply