FAQ PHP (Spanel)

SAPI dan Versi

PHP di server hosting berjalan dalam mode (SAPI) apa?

Di server hosting, PHP berjalan dalam mode CGI untuk security/privacy antaraccount. Skrip berjalan dengan sebagai Unix user masing-masing (“USER” atau “cgi-USER”). Namun Anda tidak perlu menaruh baris “#!/usr/bin/php” maupun melakukan chmod 755 atau chmod +x pada file-file skrip PHP Anda. Cukup upload saja.

Berapa versi PHP yang didukung?

Untuk server berbasis Spanel 1.3 saat ini PHP yang didukung adalah versi 5.3 tepatnya 5.3.3-7+squeeze19
— Update —

Saat ini server sudah tidak lagi mendukung versi PHP 5.2 karena alasan keamanan.

Sebaiknya versi PHP mana yang saya gunakan? 4 atau 5?

Saat ini sebaiknya sebisa mungkin menggunakan versi 5, karena versi 4 telah dihentikan dukungan resminya oleh PHP Group.

Konfigurasi

Apakah saya dapat mengedit php.ini?

Ya. Anda dapat menciptakan php.ini sendiri untuk setiap subdomain. Caranya:

  • dari Spanel buka menu Subdomain Manager
  • pilih subdomain yang diinginkan lalu klik “Setting” pada kolom Pilihan
  • pada bagian “php ini tersendiri” klik Buat php.ini atau Sunting php.ini jika php.ini sudah pernah dibuat
  • edit / tambahkan baris sintaks yang diperlukan
  • klik Simpan

Atau cara lainnya, taruhlah file php.ini di subdirektori sites/<NAMASITE>/etc/ Anda. Sintaks file php.ini dapat dilihat di manual PHP. Silakan merujuk ke http://php.net/

Catatan: jika Anda menjalankan skrip PHP lewat command line, maka lokasi php.ini tersendiri ini harus disebutkan denga opsi -c. Contoh:

[/u/t10000/sites/example.com/www]$ php5 -c ../etc skripku.php
[/u/t10000/sites/example.com/www]$ cd admin
[/u/t10000/sites/example.com/www/admin]$ php5 -c ../../etc skrip2.php

Jika tidak menyebutkan opsi -c, maka skrip command line Anda akan menggunakan php.ini default sistem (di /etc/php5).

Apakah saya dapat menggunakan php_flag di .htaccess

Maaf, php_flag tidak didukung. Sebagai gantinya, gunakan php.ini per-subdomain (lihat jawaban pertanyaan sebelumnya).

Extension

Extension apa yang tersedia di server hosting?

Untuk melihat daftar extension lengkap yang tersedia di server, dapat dilakukan dengan melihat output phpinfo(), atau mengintip direktori library PHP di /usr/lib/php5 (namun cara kedua ini kurang lengkap, karena ada juga extension yang terbuilt-in dan tidak di file *.so terpisah).

Berikut ini isi /usr/lib/php5 saat artikel ini ditulis Jun 2009 (dapat berubah sewaktu-waktu, bergantung versi terakhir PHP5; dan ini belum termasuk extension-extension yang built-in seperti ftp, openssl, pcre, dll).

apc.so
curl.so
gd.so
imagick.so
imap.so
ldap.so
mcrypt.so
memcached.so
memcache.so
ming.so
mssql.so
mysqli.so
mysql.so
odbc.so
pam_auth.so
pdo_dblib.so
pdo_mysql.so
pdo_odbc.so
pdo_pgsql.so
pdo.so
pdo_sqlite.so
pgsql.so
php_mapscript.so
pspell.so
recode.so
sqlite3.so        
sqlite.so
suhosin.so
tidy.so
xmlrpc.so
xsl.so
yaml.so

Beberapa extension lain dapat kami instal per request (berdasarkan permintaan) klien, contohnya saat ini antara lain: ffmpeg.so.

Mengapa saat saya memanggil fungsi GD, atau PostgreSQL, dll, seperti imagecreatefronpng() muncul error undefined function? Mengapa extension gd, dll tidak tersedia?

Sebetulnya extension gd, dll tersedia di server, namun tidak diload secara default. Defaultnya, hanya extension mysql dan suhosin saja (mysql.so, suhosin.so) yang diload otomatis, untuk mempercepat eksekusi server, karena hanya extension mysql-lah yang dipakai oleh lebih dari 80-90% skrip PHP, dan extension suhosin diload untuk memproteksi skrip. Jika Anda ingin menggunakan fungsi-fungsi extension lain, contohnya gd (mis: fungsi imagecreatefrompng()) maka Anda dapat menggunakan salah satu dari dua cara:

Pertama, meload secara manual di awal skrip. Tambahkan:

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

di awal skrip Anda, sebelum menggunakan fungsi-fungsi gd. Ganti gd.so dengan extension lain yang dikehendaki. Jika ingin meload lebih dari satu extension, cukup tambahkan lagi perintah dl(…) seperti di atas.

Kedua, membuat php.ini sendiri lalu menambahkan extension=… Lihat bagian sebelumnya tentang cara membuat php.ini, lalu tambahkan baris ini:

extension=gd.so

di file php.ini. Jika ingin meload lebih dari satu extension, cukup tambahkan lagi baris extension=… seperti di atas. Jangan lupa pastikan baris extension=mysql.so juga tetap ada pada file php.ini Anda jika Anda ingin menggunakan fungsi-fungsi MySQL.

Apakah PDO (PHP Data Objects) didukung?

Ya, Anda dapat menambahkan baris berikut pada php.ini Anda:

extension=pdo.so 
extension=pdo_mysql.so

Catatan: PDO hanya tersedia di PHP5. Anda perlu mengeset agar situs Anda menggunakan PHP5 dan bukan PHP4. Caranya, silakan lihat bagian sebelumnya. Jika anda menggunakan framework php seperti PRADO, anda perlu gunakan fasilitas ini .

Apakah allow_url_fopen dinonaktifkan? Saya mencoba menghidupkan lewat baris ‘allow_url_fopen=1’ di php.ini saya tapi tetap tidak bisa?

Demi keamanan (karena remote include merupakan salah satu lubang terumum pada aplikasi web), PHP di server hosting dilindungi oleh suhosin, sehingga allow_url_fopen by default dinonaktifkan. Dan jika Anda hidupkan pun belum akan membuat Anda bisa melakukan remote fopen/include. Anda masih harus mengizinkan situs-situs tertentu yang ingin diakses ke dalam whitelist.

Jika Anda membutuhkan fitur remote fopen/include PHP, untuk mengaktifkannya Anda dapat menambahkan dua baris berikut ke php.ini Anda:

allow_url_fopen=1
suhosin.executor.include.whitelist=http://SITE1,http://SITE2...

di mana SITE1, SITE2 adalah nama host yang ingin agar dapat digunakan untuk remote fopen/include.

Catatan: demi keamanan, hanya daftarkan situs yang ingin Anda gunakan saja pada SITE1, SITE2, dst. Ini melindungi Anda dari exploit yang mengambil skrip trojan/worm dari situs asing.

Catatan: Risiko keamanan karena remote include pada website Anda ditanggung oleh Anda sendiri. Harap berhati-hati.

Apakah saya dapat menginstal extension custom saya sendiri?

Bisa. Caranya:

1. Kompile. Kompilelah extension Anda di sistem yang sama dengan sistem yang digunakan server hosting saat ini (mis: server hosting saat artikel ini ditulis menggunakan OS Debian/Linux Squeeze 6.0.10, maka Anda perlu mengkompile extension PHP tersebut di sistem operasi yang sama).

Jika Anda tidak memiliki akses ke sistem lain bersistem operasi sama, Anda dapat meminta pada staf technical support untuk membukakan sementara akses ke kompiler C (seperti gcc) agar dapat mengompile extension Anda di server hosting kami.

2. Upload. Uploadlah extension hasil kompilasi Anda (*.so) ke server. Direktori yang dianjurkan adalah di sites/NAMASITE/etc/.

3. Load. Anda dapat me-load extension ini dengan:

ini_set('extension_dir', '/u/UNIXUSER/sites/NAMASITE/etc:' . ini_get('extension_dir'));
dl('NAMAEXTENSION.so');

Atau bisa juga Anda mengeset extension_dir dari php.ini Anda (lihat jawaban pertanyaan lain untuk mengetahui cara membuat php.ini sendiri).

Artikel referensi: Struktur direktori Spanel, Kompiler C.

Paket PEAR apa saja yang didukung?

Ada banyak (setidaknya puluhan) yang telah diinstal di server hosting. Anda dapat melihatnya dengan mengetikkan perintah “pear list” di shell SSH.

Encoder

Apakah Zend Optimizer didukung?

Ya. Anda dapat menjalankan skrip-skrip yang diencode dengan Zend Guard / Zend Encoder. Silakan lihat instruksi detilnya di sini: Zend Optimizer.

Apakah Ioncube PHP Loader didukung?

Ya. Anda dapat menjalankan skrip-skrip yang diencode dengan Ioncube PHP Encoder. Silakan lihat instruksi detilnya di sini: Ioncube PHP Encoder.

Apakah EAccelerator didukung?

Ya. Anda dapat menjalankan skrip-skrip yang diencode untuk EAccelerator. Silakan lihat instruksi detilnya di sini: EAccelerator.

Lain-lain

Ekstensi file apa yang dijalankan sebagai PHP?

Defaultnya, file-file berakhiran .php, .php3, .phtml akan dieksekusi oleh PHP interpreter. Anda dapat menambahkan sendiri ekstensi lain, misalnya agar *.abc juga dijalankan sebagai PHP, tambahkan ini di file .htaccess Anda:

AddType application/x-httpd-php .abc

Bahkan file HTML pun bisa saja Anda lewatkan ke PHP, dengan menambahkan baris ini di .htaccess:

AddType application/x-httpd-php .html
This entry was posted in   FAQ.
Bookmark the   permalink.

Resita has written 706 articles