
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.
Mumet saya. Tapi bagi siapapun yang berkepentingan, dalam arti paham, posting ini akan membantu. :)
DS saya pakenya Windows Server 2008 R2 sih….
aku juga mumet, belum pernah sekalipun ngutak-atik sistem php di server linux
Saya juga pake ubuntu lucid tapi belum pernah mainan php disana. . . hehehe
Karena itulah saya memilih User Experience desain.. mumet kayak gituan :P
berat bahasannya
… kalau bloglo bisa di downgrade enggak yah kang? soalnya pas masih namanya bilbo blog masih bisa saya pake … kok di blogilo error terus …
lha,,, mo roll back balik gimana nih bro?
uda 5.3 diturunin jd 5.2
trus skrg mo naikin lagi… gimana ne?
kdu ubah repositorrynya dulu kan?
mohon pncerahan bro…
ah ketemu deh… kan td kita ngotak ngatik preference ama source list…
ok-ok clear… bro
skrg udah tune-up balik ke 5.3
slamat slamaaat,,, alhamdulilaaaah….
tp ngomong2 tau dr mana ya koq kudu pake karmic bukan lucid?
newbiee neee nanya…
tp bro… php yg mo di dapet bukan 5.2.10
ini hasil yg keluar stlah smua aksi dilakukan sampe td siang nih
[quote]
root@alpha:/# apt-get install php5
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
libc-client2007b libdb4.7
Use ‘apt-get autoremove’ to remove them.
The following NEW packages will be installed:
php5
0 upgraded, 1 newly installed, 0 to remove and 17 not upgraded.
Need to get 0B/1,120B of archives.
After this operation, 20.5kB of additional disk space will be used.
Selecting previously deselected package php5.
(Reading database … 73494 files and directories currently installed.)
Unpacking php5 (from …/php5_5.2.10.dfsg.1-2ubuntu6_all.deb) …
Setting up php5 (5.2.10.dfsg.1-2ubuntu6) …
root@alpha:/#
[/quote]
gimana dunZ…? mo dptin php5.2.14 .. bro?
sebenernya di PHP 5.3 ini ada sedikit perbedaan. beberapa fungsi di 5.3.x tidak di-support oleh 5.2.x, begitu juga sebaliknya.
kalo utk versioning PHP, selama yg berubah adalah versi revision/build (alias di nilai, X), menurutku ndak begitu pengaruh di sistem, kecuali kalo memang mengejar security. :)
kenapa pakai repositori Karmic? karena secara default, PHP yg dibundled adalah versi 5.2.10 (di Lucid, defaultnya 5.3.2). kalo pengen dapet source PHP 5.3 yg lebih up-to-date, ubah repositori PHP-nya ke sini: http://php53.dotdeb.org
kalo pengen dapetin 5.2.14 atau yg terbaru, mungkin dengan kompile sendiri, atau sabar menunggu rilis di repository Karmic (entah, masih ter-update atau tidak, karena sekarang saya sudah berpindah ke Lucid). :)
semoga mencerahkan.
bentar2… nunggu sabar repository karmic ?
berarti sampe hari ini karmic repository yg kita pake step by step diatas ini… masi aja pake 5.2.10 yak?
aduhai… ga bs pa kita yg bantuin tu list terupdate mo make 5.2.14 nih,,,
iya, justru itu karna ada perubahannya yg mo dicapai… jd dr step by step yg diatas
ubah apanya lagi ya buat dapetin php 5.2.14 nyaH?
iya nih mendingan tercerahin, tp blm kelar…
barusan sy nyoba donlot php 5.2.14
uda bisa dapet tar nya (itu versi source code)
tp kan stepny ga sesimple yg dibayangkan…
yaitu kudu install dependencies php 5.2.14 itu dulu
rrrr…..
abis di untar trus gmn install dependencies nya auto yaH?
apa lagi senjata yg diperlukan….
hem, uda pernah gini juga…
dulu pas nerima framework orang, dengan php 5.2-10… mau ga mau harus downgrade.. dan alhamdulilah berhasil, langkah2nya sama seprti yg diatas…
yg mo aku tanyain, ini aku mo implementasi mongodb, untuk php-pearnya ada masalah ga?
infonya sanget berguna .
soalnya saya lagi belajar tentang semua itu.