Menghilangkan Pesan Error “Notice: Undefined Variable”

Salah satu error yang sering muncul dalam programming web dengan PHP adalah

Notice: Undefined Variable

Seperti biasa, kita akan bahas dulu penyebab pesan error ini. Pesan ini muncul karena Variabel yang anda proses dalam satu script, tidak terdefinisikan terlebih dulu. Proses ini membuat script anda tidak mengenali variabel tersebut. Lho padahal anda merasa pernah membuat variabel di script lain dan script tersebut diinclude pada script yang error tersebut. Bagaimanakah? Error memang bisa dihilangkan begitu saja dengan membiarkan error tetap terjadi. Namun sebaiknya kita mengetahui penyebabnya, dan mengantisipasi agar errornya memang tidak terjadi. Untuk menghilangkan pesan error, dapat saja kita tembak pesan berikut dengan menambahan pada awal script:

ini_set("display_errors","Off");

atau dengan cara mengganti value display_errors di php.ini dengan On diganti Off.

Penyebabnya antara lain adalah sebagai berikut:

  • Kita bisa cek di konfigurasi PHP.INI. Anda tentunya akan melihat posisi value
    register_globals="Off"

    , dimana artinya semua variabel harus terregister dengan benar pada script masing-masing.

  • Anda juga bisa melihat pada bagian error_reporting. Kemungkinan value akan berisi seperti ini
    error_reporting(E_STRICT)

.

Penyelesaiannya adalah ada tiga hal, jika bukan program anda yang menyesuaikan konfigurasi PHP, ya konfigurasi PHP yang diubah menyesuaikan dengan program anda. Atau, menyisipkan pemanggilan konfigurasi PHP dalam script programming. Antara lain dapat kita lakukan seperti berikut:

  • Mengganti value php.ini yang berisi
    register_globals=Off

    menjadi

    register_globals=On

    dengan resiko bahwa seluruh koding dengan PHP di mesin anda akan harus terkena aturan ini.

  • Mengganti value php.ini yang berisi
    error_reporting= E_STRICT

    menjadi

    error_reporting= E_ALL & ~E_NOTICE

    dengan resiko bahwa seluruh koding dengan PHP di mesin anda akan harus terkena aturan ini.

  • Menuliskan di awal script anda penulisan konfigurasi php.ini yang berlaku hanya untuk script anda dengan seperti ini
    ini_set("register_globals","On");

    resiko hanya berlaku untuk satu script anda.

  • Menuliskan di awal script anda penulisan konfigurasi php.ini yang berlaku hanya untuk script anda dengan seperti ini
    error_reporting(E_ALL ^ E_NOTICE);

    resiko hanya berlaku untuk satu script anda.

Dua langkah terakhir ini cukup akurat biasanya.

[TIPS] Pesan ERROR “cannot modify header information – headers already sent by”

Bagi para teman-teman developer, tentu sering mengalami masalah dengan pesan error seperti berikut ini

cannot modify header information – headers already sent by (output started at /var/www/......php:108

Tentu membingungkan dan membuat jengkel. Namun sebelumnya, kita perlu tahu apa penyebabnya. Penyebabnya adalah PHP kita tidak terkonfigurasi untuk menerima buffer keluaran tertentu. Buffer adalah semacam memori sementara. Biasanya setting konfigurasi PHP , php.ini anda, terdapat value ini

output_buffering=Off

Dengan kondisi seperti itu, ternyata dalam programming secara tak sadar kita telah membuka : header, session dan beberapa sintaks yang dianggap sebagai header, bahkan spasi pun bisa dianggap juga. Contoh adalah :


Setelah kita tahu penyebabnya, maka tentu kita juga memiliki solusi. Solusinya ada beberapa cara. Antara lain adalah:

  • Mengganti value output_buffering pada php.ini dengan value = On. Setelah itu anda perlu restart apache anda. Resikonya adalah, seluruh aplikasi anda akan tersetting dengan output_buffering=On
  • Menghilangkan spasi pindah baris pada koding PHP anda. Namun pesan error akan tetap terjadi jika anda melibatkan header dan session_start bersamaan dalam satu script
  • Langkah paling enak adalah menambahkan pada script anda dengan kata
    ob_start();

    Atau juga dapat dengan menambahkan sintaks pengubahan value PHP.ini khusus di script tersebut dengan :

    ini_set("output_bufferring","On");

    Perintah ini aman, karena hanya berlaku pada satu script atau satu induk script.

Misalnya adalah contoh berikut:


atau



 

Nah selamat mencoba

[First Aid] JPGraph Error 25128: The function imageantialias() is not available in your PHP installation

Pesan ini sering muncul ketika kita koding grafik: JPGraph Error 25128: The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version

Pesan ini cukup jelas. Yaitu fungsi imageantialias() yang terdapat pada JPGraph tidak berfungsi dengan benar. Dalam pesan error juga telah dijelaskan : Silakan gunakan GD Version bawaan PHP dan bukan berbeda versi dengan bawaan PHP.
Langkah paling bagus ya, kita remove GD dan PHP, lantas kita install ulang secara bersama. Hal ini akan sangat enak jika kita menggunakan Linux jenis Debian/Ubuntu/Mint atau Fedora/RedHat/Centos. Karena mereka telah mendukung dependencies installation dengan apt-get dan yum

PERTOLONGAN PERTAMA / FIRST AID

Ada cara cepat untuk menyelesaikan error ini yaitu dengan melakukan editing file gd_image.inc.php. Lho apakah masalah hilang? Tidak, sebenarnya ketika dipandang versi gd dan php kurang pas, maka jika dipandang beresiko error, akan ditutup dengan pesan error tersebut oleh JPGraph. Kita akan bongkar hal itu. Buka file gd_image.inc.php yang terdapat dalam direktori src dalam jpgraph anda. Lantas editlah bagian ini:


function SetAntiAliasing($aFlg=true) {
        $this->use_anti_aliasing = $aFlg;
        if( function_exists('imageantialias') ) {
            imageantialias($this->img,$aFlg);
        }
        else {
            JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
        }
    }


Tutuplah dengan tanda // pada baris ke 110, yaitu bagian :

//JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')

Sehingga menjadi seperti berikut


function SetAntiAliasing($aFlg=true) {
        $this->use_anti_aliasing = $aFlg;
        if( function_exists('imageantialias') ) {
            imageantialias($this->img,$aFlg);
        }
        else {
//            JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
        }
    }


Bukalah Grafik anda… Sim Salabim