Assalamualaikum. Kali ini saya akan membagikan cara mengatasi beberapa error yang teradi di dalam pemrograman php.
Langsung saja mari kita simak penjelasannya.
Error:
Error:
Penjelasannya
Penyebab:
Error di atas biasanya terjadi pada penggunaan session. Sewaktu memberikan perintah session_start(), terdapat baris perintah di atasnya yang menampilkan string atau kode html ke browser. Sebagai contoh, perhatikan script berikut ini:
Bila Anda perhatikan script di atas, maka terdapat string yang di-echo-kan atau terdapat kode html yang diletakkan sebelum session_start(). Nah… inilah yang menyebabkan error. Selain contoh di atas, error juga bisa muncul dari script yang berbentuk seperti ini:
header.php
Solusi:
Pastikan sebelum perintah session_start() tidak terdapat perintah echo atau kode html apapun.
Error:
Error:
Penyebab:
Error di atas disebabkan karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama user atau password yang salah.
Solusi:
Pastikan username dan password koneksi ke MySQL Anda sudah benar ketika menggunakan perintah koneksi mysql_connect("namahost", "namauser", "passworduser");
Error:
Error:
Errror:
Error:
Error:
Error:
Error:
Demikian postingan yang dapat saya buat untuk kali ini, semoga ada banyak waktu luang lagi untuk terus berbagi dengan teman-teman semua,
Sekian Semoga Bermanfaat
Langsung saja mari kita simak penjelasannya.
Error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ....atau
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...
Penjelasannya
Penyebab:
Error di atas disebabkan ada query SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya kurang tanda petik untuk menyatakan string dll. Selain itu bisa juga terjadi karena nama field dan tabel yang salah penulisannya.
Solusi:
Coba cek kembali statement query SQL Anda. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses debugging query SQL (mengetahui letak kesalahannya), Anda bisa menambahkan statement die(mysql_error()) pada perintah mysql_query() nya. Contoh:
Error di atas disebabkan ada query SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya kurang tanda petik untuk menyatakan string dll. Selain itu bisa juga terjadi karena nama field dan tabel yang salah penulisannya.
Solusi:
Coba cek kembali statement query SQL Anda. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses debugging query SQL (mengetahui letak kesalahannya), Anda bisa menambahkan statement die(mysql_error()) pada perintah mysql_query() nya. Contoh:
$query = "....."; mysql_query($query) or die(mysql_error()); . .
Error:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ... ) in ... on line ...atau
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ...) in ... on line ...
Penjelasannya
Penyebab:
Error di atas biasanya terjadi pada penggunaan session. Sewaktu memberikan perintah session_start(), terdapat baris perintah di atasnya yang menampilkan string atau kode html ke browser. Sebagai contoh, perhatikan script berikut ini:
<?php echo "Hallo..."; session_start(); ?>atau
<html> <head> <title>....</title> </head> <?php session_start(); ?>
Bila Anda perhatikan script di atas, maka terdapat string yang di-echo-kan atau terdapat kode html yang diletakkan sebelum session_start(). Nah… inilah yang menyebabkan error. Selain contoh di atas, error juga bisa muncul dari script yang berbentuk seperti ini:
<?php include "header.php"; session_start(); ?>Meskipun sebelum session_start() tidak ada echo atau kode html, namun error akan tetap muncul apabila isi dari script header.php terdapat echo atau kode html juga, misalnya
header.php
<?phpecho "hallo";?>
Solusi:
Pastikan sebelum perintah session_start() tidak terdapat perintah echo atau kode html apapun.
Error:
Warning: Cannot modify header information – headers already sent by (output started at ...) in ...
Penjelasannya
Penyebab:
Peringatan di atas biasanya muncul ketika Anda melakukan redirecting menggunakan perintah
Solusi:
Pastikan sebelum perintah header("Location: ...") tidak ada kode HTML atau perintah echo apapun. Jika Anda mengincludekan suatu script di atas header("Location: ...") pastikan dalam script yang diincludekan tersebut tidak ada kode HTML atau echo.
Peringatan di atas biasanya muncul ketika Anda melakukan redirecting menggunakan perintah
header("Location: ...");Seharusnya, sebelum perintah header("Location: ...") tidak boleh ada string apapun yang ditampilkan di browser, meskipun itu kode HTML (sama seperti penyebab error di session_start() sebelumnya). Sebagai contoh perhatikan script berikut ini:
<?php echo "<p>Hallo Apa kabar?</p>"; header("Location: test.php"); ?>Pada script di atas, sebelum perintah header() terdapat string yang ditampilkan ke browser. Inilah yang mengakibatkan muncul peringatan tsb. Lantas bagaimana dengan script berikut ini?
<?php $a = 10; if ($a < 0) echo "Nilai A negatif"; else header("Location: test.php"); ?>Kira-kira muncul Warning nya gak ya? Jika Anda coba, maka tidak muncul Warning nya meskipun sebelum header() terdapat string yang ditampilkan ke browser. Mengapa demikian? ya.. meskipun di situ terdapat perintah untuk menampilkan string ke browser, namun perintah tersebut tidak pernah dijalankan karena nilai $a nya positif.
Solusi:
Pastikan sebelum perintah header("Location: ...") tidak ada kode HTML atau perintah echo apapun. Jika Anda mengincludekan suatu script di atas header("Location: ...") pastikan dalam script yang diincludekan tersebut tidak ada kode HTML atau echo.
Error:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: YES) in ...
Penjelasannya
Penyebab:
Error di atas disebabkan karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama user atau password yang salah.
Solusi:
Pastikan username dan password koneksi ke MySQL Anda sudah benar ketika menggunakan perintah koneksi mysql_connect("namahost", "namauser", "passworduser");
Error:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in ...
Penjelasannya
Penyebab:
Penyebab pastinya, saya kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang menggunakan OOP.
Solusi:
Coba upgrade versi PHP Anda, atau gunakan PHP dengan versi yang lebih tinggi.
Penyebab pastinya, saya kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang menggunakan OOP.
Solusi:
Coba upgrade versi PHP Anda, atau gunakan PHP dengan versi yang lebih tinggi.
Error:
Parse error: syntax error, unexpected T_ELSE in ...
Penjelasannya
Penyebab:
Error tersebut muncul sebagai akibat penulisan sintaks IF … ELSE yang tidak sesuai aturan. Perhatikan contoh penggunaan IF ELSE yang salah di bawah ini
Solusi:
Pastikan struktur statement yang Anda gunakan berbentuk seperti ini
Error tersebut muncul sebagai akibat penulisan sintaks IF … ELSE yang tidak sesuai aturan. Perhatikan contoh penggunaan IF ELSE yang salah di bawah ini
<?php $a = 5; if ($a > 0) $status = "A lebih besar dari 0" else ($a < 0) $status = "A lebih kecil dari 0" else $status = "A sama dengan 0" ?>Contoh di atas terdapat kesalahan yaitu setiap akhir statement tidak diberikan tanda titik koma (;), dan pada bagian else ($a < 0) kurang IF, seharusnya
<?php $a = 5; if ($a > 0) $status = "A lebih besar dari 0"; else if ($a < 0) $status = "A lebih kecil dari 0"; else $status = "A sama dengan 0"; ?>
Solusi:
Pastikan struktur statement yang Anda gunakan berbentuk seperti ini
<?php if (syarat1) statement1; else if (syarat2) statement2; else if (syarat3) statement3; . . else statementX; ?> atau <?php if (syarat1) { statement; statement; . . } else if (syarat2) { statement; statement; . . } . . else { statement; statement; . . } ?>
Errror:
Fatal error: Call to undefined function: ...
Penjelasannya
Penyebab:
Error tersebut disebabkan karena nama function yang digunakan tidak ada atau tidak dikenal oleh PHP. Jika function tersebut adalah built in function, misalnya str_split() bisa jadi hal ini disebabkan pada versi PHP yang digunakan belum ada function tersebut. Jika function tersebut adalah function buatan sendiri, bisa jadi anda lupa menyisipkan ke dalam script atau meng-include-kannya.
Solusi:
Jika function yang tidak dikenal adalah built in function, maka lakukan upgrade versi PHP yang lebih tinggi. Sedangkan jika function yang tidak dikenal adalah buatan sendiri, pastikan Anda sudah meng-includekan di dalam scriptnya sehingga bisa dikenal. Contohnya:
Error tersebut disebabkan karena nama function yang digunakan tidak ada atau tidak dikenal oleh PHP. Jika function tersebut adalah built in function, misalnya str_split() bisa jadi hal ini disebabkan pada versi PHP yang digunakan belum ada function tersebut. Jika function tersebut adalah function buatan sendiri, bisa jadi anda lupa menyisipkan ke dalam script atau meng-include-kannya.
Solusi:
Jika function yang tidak dikenal adalah built in function, maka lakukan upgrade versi PHP yang lebih tinggi. Sedangkan jika function yang tidak dikenal adalah buatan sendiri, pastikan Anda sudah meng-includekan di dalam scriptnya sehingga bisa dikenal. Contohnya:
function.php <?php function jumlah($a, $b) { return $a + $b; } ?>
script.php <?php include "function.php"; echo jumlah(9, 10); // akan menghasilkan 19 ?> atau script.php <?php function jumlah($a, $b) { return $a + $b; } echo jumlah(9, 10); // akan menghasilkan 19 ?>
Error:
Parse error: parse error, unexpected $end
Penjelasannya
Penyebab:
Error di atas disebabkan karena kurangnya tanda penutup kurung kurawal. Contohnya:
Solusi:
Pastikan tanda kurung kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang Anda hadapi sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP), konsistenkan penulisan tanda pembukanya menggunakan <?php supaya aman.
s
Error di atas disebabkan karena kurangnya tanda penutup kurung kurawal. Contohnya:
<?php if ($a > 1) { echo "Nilai A lebih dari 1"; ?> atau <?php while ($a > 1) { . . . ?>Selain itu, bisa pula error tersebut disebabkan karena efek perbedaan penggunaan tanda pembuka PHP <?php dan <?. Contohnya
<?php if (syarat) { statement1; statement2; ?> <? statement3; statement4; } ?>Perhatikan contoh script di atas, bahwa pada blok statement IF oleh si programmer dipecah menjadi 2 blok, namun perhatikan bahwa untuk blok kedua, tanda pembukanya menggunakan <? saja. Nah... terkadang suatu server hanya membolehkan tanda pembuka script PHP menggunakan <?php, sehingga untuk blok kedua tidak dianggap sebagai script, dan.. akibatnya statement IF nya dianggap tidak ada tanda } penutup.
Solusi:
Pastikan tanda kurung kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang Anda hadapi sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP), konsistenkan penulisan tanda pembukanya menggunakan <?php supaya aman.
s
Error:
Parse error: syntax error, unexpected T_STRING
Penjelasannya
Penyebab:
Error tersebut disebabkan karena penggunaan tanda petik (double quote atau single quote) yang tidak tepat untuk menyatakan suatu string. Sebuah string harus diapit oleh dua buah tanda petik. Sebagai contoh:
Solusi:
Pastikan di dalam sebuah string, anda mengapitnya dengan hanya 2 buah tanda petik saja. Jika Anda bermaksud menyisipkan tanda petik dalam sebuah string, gunakan tanda \" atau \', contoh
Error tersebut disebabkan karena penggunaan tanda petik (double quote atau single quote) yang tidak tepat untuk menyatakan suatu string. Sebuah string harus diapit oleh dua buah tanda petik. Sebagai contoh:
<?php $a = "ini sebuah string"; ?> atau <?php $a = 'ini sebuah string'; ?>Namun... jika dalam string tersebut terdapat tanda petik lagi, misalkan
<?php $a = "ini sebuah " string"; ?> atau <?php $a = 'ini sebuah ' string'; ?>maka akan terdapat error di atas. Hal yang sama jika Anda menggunakan single quote (tanda petik tunggal).
Solusi:
Pastikan di dalam sebuah string, anda mengapitnya dengan hanya 2 buah tanda petik saja. Jika Anda bermaksud menyisipkan tanda petik dalam sebuah string, gunakan tanda \" atau \', contoh
<?php $a = "ini sebuah \" string"; ?> atau <?php $a = 'ini sebuah \' string'; ?>
Error:
Notice: Undefined index: ... atau Notice: Undefined variable: ...
Penjelasannya
Penyebab:
Sebenarnya itu bukan error, namun sekedar peringatan saja bahwa ada variabel atau index array yang belum terdefinisi sebelumnya. Di beberapa versi PHP peringatan tersebut muncul, namun di versi yang lain tidak muncul. Berikut ini contohnya:
Solusi:
Sebenarnya peringatan di atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau proses yang terjadi di dalamnya. Namun, jika Anda ingin menghilangkan peringatan tersebut caranya adalah dengan memodifikasi parameter
error_reporting = ...
pada file konfigurasi php.ini
Tambahkanlah nilai "& ~E_NOTICE" pada nilai parameternya, contoh:
Sebenarnya itu bukan error, namun sekedar peringatan saja bahwa ada variabel atau index array yang belum terdefinisi sebelumnya. Di beberapa versi PHP peringatan tersebut muncul, namun di versi yang lain tidak muncul. Berikut ini contohnya:
<?php if ($a > 0) { .... } ?>Jika kita perhatikan script di atas, variabel $a langsung diberikan statement pengecekan IF, padahal nilai $a ini tidak ada sebelumnya. Nah... di beberapa versi PHP, akan muncul peringatan
Notice: Undefined variable: aNamun, bila nilai $a ini sudah didefinisikan sebelumnya misalnya
<?php $a = 10; if ($a > 0) { .... } ?>maka peringatan di atas tidak akan muncul lagi. Peringatan yang hampir sama juga bisa muncul untuk contoh berikut ini
<?php if ($_GET['test'] == 0) { .... } ?>yang dikarenakan nilai $_GET['test'] belum terdefinisi sebelumnya atau belum ada nilainya (belum ada request GET untuk parameter 'test').
Solusi:
Sebenarnya peringatan di atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau proses yang terjadi di dalamnya. Namun, jika Anda ingin menghilangkan peringatan tersebut caranya adalah dengan memodifikasi parameter
error_reporting = ...
pada file konfigurasi php.ini
Tambahkanlah nilai "& ~E_NOTICE" pada nilai parameternya, contoh:
error_reporting = E_ALL & ~E_NOTICEMaksud dari parameter di atas adalah, PHP akan menampilkan bunyi error kecuali NOTICE. Jika sudah, silakan merestart Apache nya.
Error:
Fatal error: Maximum execution time of ... seconds exceeded in ...
Penjelasannya
Penyebab:
Error di atas disebabkan karena lama eksekusi sebuah script PHP telah mencapai batas maksimumnya. Jika Anda menggunakan AppServ atau XAMPP, default maximum execution time nya diset 30 detik. Jika lama eksekusi script yang Anda buat melebihi 30 detik, maka akan muncul error di atas.
Solusi:
Anda dapat meningkatkan atau menambah max execution time pada file php.ini, dengan cara carilah parameter
max_execution_time = ...
Tambahlah nilainya, misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi
max_execution_time = 9999
Selanjutnya, simpan kembali php.ini nya, lalu restart Apachenya.
Kalau perlu, lakukan analisis algoritma pada script Anda apabila dirasa tidak efisien sehingga mengakibatkan running time yang lama.
Error di atas disebabkan karena lama eksekusi sebuah script PHP telah mencapai batas maksimumnya. Jika Anda menggunakan AppServ atau XAMPP, default maximum execution time nya diset 30 detik. Jika lama eksekusi script yang Anda buat melebihi 30 detik, maka akan muncul error di atas.
Solusi:
Anda dapat meningkatkan atau menambah max execution time pada file php.ini, dengan cara carilah parameter
max_execution_time = ...
Tambahlah nilainya, misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi
max_execution_time = 9999
Selanjutnya, simpan kembali php.ini nya, lalu restart Apachenya.
Kalau perlu, lakukan analisis algoritma pada script Anda apabila dirasa tidak efisien sehingga mengakibatkan running time yang lama.
Demikian postingan yang dapat saya buat untuk kali ini, semoga ada banyak waktu luang lagi untuk terus berbagi dengan teman-teman semua,
Sekian Semoga Bermanfaat