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

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.

Related Articles

13 responses

  1.  

    Mumet saya. Tapi bagi siapapun yang berkepentingan, dalam arti paham, posting ini akan membantu. :)

    Antyo Rentjoko — June 29, 2010 04:01
  2.  

    DS saya pakenya Windows Server 2008 R2 sih…. (dance)

    nahdhi — June 29, 2010 07:28
  3.  

    aku juga mumet, belum pernah sekalipun ngutak-atik sistem php di server linux

    mawi wijna — June 29, 2010 16:19
  4.  

    Saya juga pake ubuntu lucid tapi belum pernah mainan php disana. . . hehehe

    Jidat — July 6, 2010 16:42
  5.  

    Karena itulah saya memilih User Experience desain.. mumet kayak gituan :P

    ardianzzzz — July 8, 2010 22:16
  6.  

    berat bahasannya (thinking) … kalau bloglo bisa di downgrade enggak yah kang? soalnya pas masih namanya bilbo blog masih bisa saya pake … kok di blogilo error terus … (doh)

    gadgetboi — August 5, 2010 21:08
  7.  

    lha,,, mo roll back balik gimana nih bro?

    uda 5.3 diturunin jd 5.2
    trus skrg mo naikin lagi… gimana ne?

    :D
    kdu ubah repositorrynya dulu kan?
    mohon pncerahan bro… :-(

    g — September 2, 2010 09:47
  8.  

    ah ketemu deh… kan td kita ngotak ngatik preference ama source list…

    ok-ok clear… bro :D

    skrg udah tune-up balik ke 5.3 :D slamat slamaaat,,, alhamdulilaaaah…. (cozy)

    g — September 2, 2010 10:04
  9.  

    tp ngomong2 tau dr mana ya koq kudu pake karmic bukan lucid?

    :D

    newbiee neee nanya… :D

    g — September 2, 2010 10:08
  10.  

    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? (annoyed)

    g — September 2, 2010 10:56
    •  

      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.

      zam — September 2, 2010 16:09
  11.  

    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… (annoyed)

    g — September 2, 2010 16:31
  12.  

    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?

    :-)) bener2… perlu perjuangan nih.
    apa lagi senjata yg diperlukan…. (lonely)

    g — September 2, 2010 16:34
 
:-)) :-) :-D :-P (woot) ;-) :-o X-( :-( :-& (angry) (annoyed) (bye) B-) (cozy) (sick) (: (goodluck) (griltongue) (mmm) (hungry) (music) (tears) (tongue) (unsure) (dance) (doh) (brokenheart) (drinking) (girlkiss) (rofl) (money) (rock) (nottalking) (party) (sleeping) (thinking) (bringit) (worship) (applause) 8-) (gym) (heart) (devil) (lmao) (banana_cool) (banana_rock) (evil_grin) (headspin) (heart_beat) (ninja) (haha) (evilsmirk) (bigeyes) (funkydance) (idiot) (lonely) (scenic) (hassle) (panic) (okok) (yahoo) (K) (highfive) (LOL) (blush) (taser)