Hai MWNer's

Masalah

Website saya berjalan ketika dicoba di komputer lokal, tapi kok sewaktu diupload ke server hosting tidak jalan? Siapa yang salah? Bagaimana menyelesaikannya?

Penjelasan/solusi

Beberapa penyebab umum adalah perbedaan OS dan perbedaan konfigurasi (baik layout direktori, webserver, PHP, MySQL). Pengguna hosting umumnya mendevelop website di komputer lokal, yang umumnya berbasiskan Windows. Aplikasi PHP+MySQL dapat didevelop di Windows misalnya menggunakan paket XAMPPS, yang berisi Apache, MySQL, dan PHP for Windows. Server hosting sendiri sering berbasiskan Unix/Linux/FreeBSD.

Perbedaan Huruf Besar-Kecil

Sistem operasi Unix/Linux/BSD membedakan huruf besar dan kecil. Jadi Anda dapat membuat file bernama “index.html” dan “INDEX.HTML” (dan “Index.html”, dst) di direktori yang sama tanpa bentrok. Sementara di DOS/Windows tidak bisa.

Pastikan jika Anda membuat file indeks, seperti index.php, semuanya dalam huruf kecil, agar dapat muncul sebagai halaman indeks di server hosting berbasis Unix.

Atau jika Anda memuat gambar atau membuat link di HTML, mis:

<img src="besar.jpg">
<a href="sesuatu.php">

maka pastikan nama file yang dirujuk sudah tepat huruf besar dan kecilnya. Jika tidak, gambar atau link yang Anda buat tidak akan muncul.

Perbedaan Path

Hindari menggunakan path absolut di file HTML maupun skrip Anda, mis:

C:/Documents and Settings/budi/My Documents/website/index.html

karena di server hosting pathnya akan berbeda, misalnya:

/u/t10000/sites/example.com/index.html

atau:

/home/t10000/public_html

Gunakanlah path relatif. Contoh jika Anda memiliki file subdir/file.html, di dalamnya ada link ke halaman depan (index.html), maka gunakanlah link ke:

../index.html

Catatan: path di Unix menggunakan karakter pembatas “/” (garis miring ke depan), bukan “\” (garis miring terbalik). Jadi pastikan untuk menggunakan garis miring ke depan di file-file HTML Anda.

Perbedaan Konfigurasi PHP

PHP adalah bahasa pemrograman yang dapat dikonfigurasi secara (amat) berbeda-beda di tiap server atau komputer. Mulai dari ekstensinya (*.php, dulu ada juga *.php3, *.phtml, dsb), tag pembukanya (tag pendek <? atau tag panjang <?php), dan banyak lagi. Berikut ini beberapa prinsip untuk mempermudah agar aplikasi PHP Anda lebih portabel:

  • Jangan asumsikan selalu berjalan di API modul. Banyak server shared hosting yang menggunakan API CGI demi keamanan.
  • Jangan asumsikan extension tertentu tersedia. Di server hosting tertentu, seperti di MWN, defaultnya tidak semua extension di-load, sehingga ketika mencoba memanggil fungsi tertentu seperti GD atau ImageMagick, muncul pesan kesalahan “Call to undefined function”. Ini bukan berarti server hosting tidak mendukung extension tersebut, tapi Anda harus me-load extension tersebut lebih dahulu, misalnya dengan menaruh baris extension=… di php.ini Anda atau memanggil fungsi dl() di awal skrip.
  • Pastikan skrip Anda dapat berjalan baik di mode register_globals Off.

Jika server hosting mengizinkan tiap website memiliki php.ini sendiri, ini mempermudah, karena Anda dapat menyamakan php.ini di server hosting dengan di komputer lokal Anda.

Perbedaan Konfigurasi MySQL

Perbedaan disini adalah perbedaan konfigurasi untuk nama database, username database dan password database pada komputer lokal dengan server. Konfigurasi ini biasanya didefinisikan pada file tertentu yang memang berisi setingan dari situs itu sendiri, misal: configuration.php.


Isi file konfigurasi bawaan komputer lokal untuk setting database situs Anda biasanya (untuk nama,username,password):

host = "localhost";
nama_database = "database";
username_database = "root";
password_database = "";

Sedangkan pada server hosting MWN untuk nama, username dan password database disesuaikan dengan nama, username dan password database yang sudah dibuat melalui spanel, lebih tepatnya pada menu MySQL (jika menggunakan MySQL) atau PostgreSQL (jika menggunakan PostgreSQL).


Hal yang perlu diperhatikan ketika membuat database, yaitu “Database name” dan “User name” harus diikuti dengan username utama Anda, misal: username utama = t1000x, maka akan menjadit1000x_namadb dan t1000x_userdb, sedangkan untuk “Password” adalah bebas (password terserah Anda).
Maka file konfigurasi situs Anda untuk setting database akan berubah menjadi (misal):

host = "localhost";
nama_database = "t1000x_namadb";
username_database = "t1000x_userdb";
password_database = "terserah_anda";