Skip to content
03/07/2010 / Windy

Downgrade PHP 5.3.x ke 5.2.x di Ubuntu 10.04 (Lucid Lynx)

wihans.web.id [software] & [linux] : Tiba-tiba siang tadi saya dikontak salah satu kliennya pabrik, bahwa website-nya bermasalah. Herannya, selama ini website tersebut ndak diutak-atik. Sempat pusing juga kenapa bisa terjadi, padahal ketika skrip dicoba di server development, tidak ada masalah.

Usut punya usut, ternyata PHP yang digunakan adalah PHP versi 5.3.x yang bermasalah pada skrip website karena ada beberapa fungsi krusial yang dihilangkan. Paket PHP ini ikut ter-upgrade karena server di-upgrade ke Ubuntu versi 10.4 (Lucid Lynx) oleh sys-admin mereka.

Saya pun memutuskan untuk men-downgrade paket PHP tersebut dari versi 5.3.x ke 5.2.x supaya website bisa jalan normal tanpa saya harus ngoprek skripnya..

Berikut ini langkah-langkah yang saya lakukan untuk men-downgrade PHP tersebut.

Cek paket-paket PHP apa saja yang terinstall di server, kemudian di-list untuk dihapus dari sistem. Untuk melakukannya gunakan perintah dpkg -l | grep php. Di tempat saya, outputnya seperti berikut :

ii  libapache2-mod-php5 5.3.2-0ubuntu1	server-side, HTML-embedded scripting languag
ii  php-pear	        5.3.2-0ubuntu1	PEAR - PHP Extension and Application Reposit
ii  php5-cgi		5.3.2-0ubuntu1	server-side, HTML-embedded scripting languag
ii  php5-cli		5.3.2-0ubuntu1	command-line interpreter for the php5 script
ii  php5-common		5.3.2-0ubuntu1	Common files for packages built from the php
ii  php5-dev		5.3.2-0ubuntu1	Files for PHP5 module development
ii  php5-gd		5.3.2-0ubuntu1	GD module for php5
rc  php5-mcrypt		5.3.2-0ubuntu1	MCrypt module for php5
ii  php5-mysql		5.3.2-0ubuntu1	MySQL module for php5
ii  php5-sqlite		5.3.2-0ubuntu1	SQLite module for php5

Setelah ketahuan paket-paket apa saja yang terinstall, maka catat semua paket ini untuk kemudian dihapus dari sistem dan nantinya akan diinstall kembali, namun dalam versi yang lebih rendah.

Untuk melakukan “pencatatan” ini, tambahkan perintah awk pada perintah sebelumnya, menjadi dpkg -l | grep php | awk '{print $2}', dan hasilnya semacam ini:

libapache2-mod-php5
php-pear
php5-cgi
php5-cli
php5-common
php5-dev
php5-gd
php5-mcrypt
php5-mysql
php5-sqlite

Hapus paket-paket tersebut dengan perintah sudo apt-get remove [nama_paket].

Tambahkan repositori Karmic ke file /etc/apt/source.list. Repositori Karmic ini digunakan sebagai referensi PHP versi 5.2.x. Cara ini bisa diakali dengan menyalin file repositori sekarang (Lucid), kemudian mengganti referensinya ke Karmic dan memasukkannya ke daftar source repositori.

Cara mudahnya, gunakan perintah sed s/lucid/karmic/g /etc/apt/sources.list | tee /etc/apt/sources.list.d/karmic.list (menggunakan akses root).

Kemudian, buat pin yang fungsinya untuk menahan agar paket-paket PHP tersebut tidak di-upgrade.

Buat sebuah file bernama php yang disimpan di folder /etc/apt/preferences.d/, yang isinya sebagai berikut:

Package: libapache2-mod-php5
Pin: release a=karmic
Pin-Priority: 991

Package: php-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5-cgi
Pin: release a=karmic
Pin-Priority: 991

Package: php5-cli
Pin: release a=karmic
Pin-Priority: 991

Package: php5-common
Pin: release a=karmic
Pin-Priority: 991

Package: php5-dev
Pin: release a=karmic
Pin-Priority: 991

Package: php5-gd
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mcrypt
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mysql
Pin: release a=karmic
Pin-Priority: 991

Package: php5-sqlite
Pin: release a=karmic
Pin-Priority: 991

Setelah selesai, update repositori dengan perintah apt-get update (jika tidak menggunakan akses root, tambahkan perintah sudo).

Lakukan instalasi paket-paket yang tadi dengan perintah sudo apt-get install [nama_paket], namun kali ini paket yang ter-install otomatis menggunakan versi 5.2.x.

Jika sudah, silakan dicek lagi apakah versi PHP yang ter-install sudah benar versi 5.2.x dengan perintah dpkg -l | grep php, misalnya outputnya seperti berikut :

ii  libapache2-mod-php5	5.2.10.dfsg.1-2ubuntu6.4 server-side, HTML-embedded scripting languag
ii  php-pear		5.2.10.dfsg.1-2ubuntu6.4 PEAR - PHP Extension and Application Reposit
ii  php5-cgi		5.2.10.dfsg.1-2ubuntu6.4 server-side, HTML-embedded scripting languag
ii  php5-cli		5.2.10.dfsg.1-2ubuntu6.4 command-line interpreter for the php5 script
ii  php5-common		5.2.10.dfsg.1-2ubuntu6.4 Common files for packages built from the php
ii  php5-dev		5.2.10.dfsg.1-2ubuntu6.4 Files for PHP5 module development
ii  php5-gd		5.2.10.dfsg.1-2ubuntu6.4 GD module for php5
rc  php5-mcrypt		5.2.6-0ubuntu2		 MCrypt module for php5
ii  php5-mysql		5.2.10.dfsg.1-2ubuntu6.4 MySQL module for php5
ii  php5-sqlite		5.2.10.dfsg.1-2ubuntu6.4 SQLite module for php5

Untuk memudahkan prosesi ini, silakan unduh bash script berikut (jangan lupa ganti namanya menjadi berekstensi .sh dan beri akses execute) yang saya dapatkan dari sini. Eksekusi file bash script tersebut menggunakan akses root.

Jika misalnya pengen meng-install paket lain, misalnya php5-xdebug, jangan lupa tambahkan pin telebih dahulu di file /etc/apt/preferences.d/php seperti berikut:

Package: php5-xdebug
Pin: release a=karmic-updates
Pin-Priority: 991

Lalu lakukan sudo apt-get update baru meng-install dengan perintah sudo apt-get install php5-xdebug.

Posting Tgl.: 03 Juli 2010
Diposting Oleh :

%d bloggers like this: