Extension PHP (Spanel)

Masalah

Mengapa PHP di server hosting tidak mendukung extension GD? extension imap? extension …?

Ketika skrip saya ingin memanggil sebuah fungsi PHP, misalnya imagecreate() muncul pesan error ‘Call to undefined function imagecreate() in …’. Apakah ini artinya fungsi tersebut tidak didukung? Atau extension GD tidak diload di PHP?

Solusi

PHP di server hosting berjalan dengan SAPI CGI. Defaultnya, di php.ini server (/etc/php5/cgi/php.ini atau /etc/php4/cgi/php.ini, bergantung pada versi PHP mana yang Anda gunakan), hanya extension mysql saja yang diload. Ini agar kecepatan load PHP tinggi. Mayoritas skrip PHP memang menggunakan extension ini namun untuk extension lain frekuensi penggunaannya berbeda-beda.

Jika skrip Anda membutuhkan extension lain, Anda bisa meload extension tersebut secara manual menggunakan fungsi dl(). Contoh, di awal skrip Anda menambahkan:

if (!extension_loaded('gd')) dl('gd.so');

Cara kedua, agar tidak perlu menambahkan perintah di atas di awal setiap skrip, adalah dengan membuat php.ini tersendiri untuk situs Anda. Caranya dengan login ke control panel, mengklik Subdomain manager, lalu mengklik Prefs pada subdomain yang Anda inginkan, lalu lihat pilihan php.ini. Buat php.ini yang isinya kurang lebih seperti ini:

register_globals=On
extension=gd.so

Register_globals tidak perlu disebutkan jika ingin dimatikan. Baris extension dapat ditambah lagi dengan extension yang lain.

Daftar extension selengkapnya yang tersedia di server dapat dilihat menggunakan fungsi phpinfo(). File-file extension-nya sendiri ditaruh di direktori /usr/lib/php5/YYYYMMDD atau /usr/lib/php4/YYYYMMDD, contohnya, pada saat penulisan dokumen ini:

%  ls -1 /usr/lib/php4/20050606/
curl.so
domxml.so
gd.so
imagick.so
imap.so
json.so
ldap.so
mcal.so
mcrypt.so
mhash.so
mysql.so
odbc.so
pgsql.so
recode.so
snmp.so
sqlite3.so
sqlite.so
syck.so
xslt.so

Hardit has written 22 articles