Komunitas WordPress dan PHP di Indonesia sebagian besar bekerja dengan hosting bersama (cPanel), dan di situlah masalah CRLF paling sering muncul: mengedit file di Notepad Windows lalu mengunggahnya lewat FileZilla dalam mode ASCII bisa diam-diam mengubah akhir baris di tengah jalan, membuat skrip yang berjalan mulus di komputer lokal tiba-tiba error di server.
Dari mana perbedaan ini berasal
Unix dan macOS menggunakan satu karakter — LF (line feed, \n). Windows mewarisi dari mesin teleks lama sepasang karakter — CRLF (carriage return + line feed, \r\n): satu mengembalikan kereta ke awal baris, yang lain memindahkan ke baris di bawahnya — tiruan harfiah dari mesin tik.
Mengapa ini masih penting
- Git. Jika berkas dengan CRLF masuk ke repositori tempat berkas lain menggunakan LF, git bisa menampilkan "seluruh berkas berubah" meskipun hanya satu baris yang diedit — karena secara teknis akhir dari semua baris berubah.
- Skrip shebang. Skrip shell Unix yang disimpan dengan akhir CRLF bisa gagal dijalankan di server, karena interpreter melihat karakter
\rekstra di baris pertama. - Perbandingan string dalam kode. Baris yang dibaca dari berkas CRLF bisa tidak cocok saat dibandingkan dengan string LF yang diharapkan, meskipun teks yang terlihat tampak sama.
Bagaimana ini ditangani
Git memiliki pengaturan (core.autocrlf) yang secara otomatis mengonversi akhir baris saat checkout/commit, tapi mengandalkan konfigurasi lokal tiap kontributor cukup rapuh. Menetapkan gaya lewat berkas .gitattributes yang ikut di-commit ke repositori lebih dapat diandalkan, karena aturannya berlaku untuk semua orang, apa pun editor atau OS yang dipakai.
Untuk apa konversi manual dibutuhkan
- Memperbaiki berkas yang masuk ke repositori dengan gaya akhir baris yang salah.
- Menyiapkan skrip untuk server Linux yang telah diedit di editor Windows sebelum diunggah lewat FTP.
- Mendiagnosis mengapa perbandingan teks antara dua berkas yang tampak identik menunjukkan perbedaan.
Akhir baris campuran dalam satu berkas
Berkas yang diedit di beberapa editor atau OS berbeda bisa berisi CRLF dan LF sekaligus — sebagian baris dengan satu gaya, sebagian dengan gaya lain. Ini adalah kasus paling rumit: konversi "ke LF" sekilas tidak mengubah apa pun pada baris yang sudah berupa LF, tetapi penting untuk menerapkan konversi ke seluruh berkas, bukan hanya baris yang tampak "mencurigakan", agar masalahnya tidak tetap tersembunyi.