รัน php หลายเวอร์ชั่นด้วย PHPBrew

phpbrew

PHPBrew หลักๆจะเน้นที่การสลับรุ่น PHP ที่ทำงานกับ CLI (command line) ซึ่งมันก็ยังสลับรุ่นได้สะดวกดีมากกับ Apache ได้อีกด้วยเช่นกัน แต่จะต้องมีเทคนิคเล็กน้อย. หากคุณกำลังพัฒนา PHP บน Windows, Mac, Linux สายต่างๆ เช่น Ubuntu การใช้ PHPBrew นี่จะช่วยให้คุณสะดวกมากๆและยังรันบนสภาพแวดล้อม OS ที่เหมาะสมได้อีกด้วย (สำหรับ Windows user อาจพบปัญหาชื่อไฟล์ case sensitive เวลาพัฒนางานของคุณ นี่จะช่วยได้นะ)

ก่อนติดตั้ง

สำรวจความต้องการจากหน้าเว็บ requirement ก่อนครับ โดยจากหน้าบทความนี้ ผมขอยกตัวอย่างจากการติดตั้งใช้งานบน Ubuntu เท่านั้น ผู้ใช้ OS อื่นๆโปรดดูจากหน้าเว็บของ PHPBrew เทียบเคียงเอานะครับ ไม่ยากเท่าไหร่. ส่วนของการติดตั้ง ให้ติดตั้งตามขั้นตอน Install Medium Requirement เพื่อให้มันผ่านง่ายๆรวดเดียวจบ.

พิมพ์ sudo -i เพื่อใช้งานเป็น root user ในหน้า terminal, ssh อาจถามหารหัสผ่านของ root ให้กรอกรหัสผ่านนั้น. จากนั้นพิมพ์คำสั่งดังต่อไปนี้ทีละบรรทัดแล้ว enter

apt-get build-dep php5
apt-get install -y php5 php5-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php5-cli bison libbz2-dev libreadline-dev
apt-get install -y libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8 libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
apt-get install -y libssl-dev openssl
apt-get install -y gettext libgettextpo-dev libgettextpo0
apt-get install -y libicu-dev
apt-get install -y libmhash-dev libmhash2
apt-get install -y libmcrypt-dev libmcrypt4
apt-get install -y libmemcached-dev

ติดตั้ง PHPBrew

โปรดทำตามขั้นตอน อ้างอิงจากหน้า http://phpbrew.github.io/phpbrew/

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
sudo mv phpbrew /usr/bin/phpbrew

จากนั้นทำตามขั้นตอน อ้างอิงจากหน้า https://github.com/phpbrew/phpbrew/wiki/Cookbook ในส่วนของ Install phpbrew into system-wide environment เพื่อให้โปรแกรมทำงานได้จากทุก user บนเครื่องครับ

พิมพ์ sudo -i เพื่อใช้งานเป็น root user ในหน้า terminal, ssh อาจถามหารหัสผ่านของ root ให้กรอกรหัสผ่านนั้น.

เริ่มใช้งานด้วยคำสั่ง phpbrew init

แก้ไขไฟล์ ~/.bashrc ด้วยคำสั่ง sudo gedit ~/.bashrc แล้วเพิ่ม [[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc ไว้บรรทัดล่างสุด

แก้ไขไฟล์ ~/.phpbrew/init ด้วยคำสั่ง sudo gedit ~/.phpbrew/init มองหา 2 บรรทัดนี้แล้วแก้ไขหรือเพิ่มลงไป

export PHPBREW_ROOT=/opt/phpbrew
export PHPBREW_HOME=/opt/phpbrew

ติดตั้ง PHP

พิมพ์ sudo -i เพื่อใช้งานเป็น root user ในหน้า terminal, ssh อาจถามหารหัสผ่านของ root ให้กรอกรหัสผ่านนั้น.

ให้ใช้คำสั่งดังต่อไปนี้ในการติดตั้งเพื่อไม่ให้เกิด error ใดๆตามมา โดยส่วน extension อื่นๆให้ทำการติดตั้งภายหลัง

phpbrew install 5.6.16 +default +dbs +mb +xmlrpc +gettext +openssl +apxs2=/usr/bin/apxs2 +exif +iconv

โดยรุ่นของ php จะดูได้จากคำสั่ง phpbrew known และ phpbrew known --more

การติดตั้งรุ่นอื่นๆก็ทำได้เลย เช่น

phpbrew install 5.5.30 +default +dbs +mb +xmlrpc +gettext +openssl +apxs2=/usr/bin/apxs2 +exif +iconv
phpbrew install 7.0.0 +default +dbs +mb +xmlrpc +gettext +openssl +apxs2=/usr/bin/apxs2 +exif +iconv

ติดตั้ง PHP extension

extension ของ PHP ที่ติดตั้งภายหลังเหล่านี้ ถ้าหากคุณได้ลองทำผ่านการติดตั้งแบบธรรมดา phpbrew install แล้วผ่านไม่มี error ก็สามารถใช้งานได้เหมือนกัน แต่บางกรณีที่พบบ่อยคือ gd และอื่นๆ จะมีปัญหาทำให้ configure ไม่ผ่านบ้าง build ไม่ผ่านบ้าง ซึ่งการติดตั้งผ่านคำสั่งนี้จะดู debug ได้และหาทางแก้ไขได้ง่ายกว่า

ให้ใช้คำสั่ง phpbrew use เพื่อเปลี่ยน version ก่อน เช่น phpbrew use 5.6.16 แล้วจึงใช้คำสั่งดังต่อไปนี้เพื่อติดตั้ง extension ตามลำดับ

phpbrew ext install gd
phpbrew ext install imagick
phpbrew ext install xdebug
phpbrew ext install memcached

สำหรับผู้ติดตั้ง PHP 5.3 กรุณาใช้ xdebug ตัวเก่า เช่น phpbrew ext install xdebug 2.2.7 เป็นต้น (อ้างอิงจาก https://github.com/phpbrew/phpbrew/issues/518)

การใช้งาน PHPBrew

คุณสามารถดูได้ว่าติดตั้ง PHP รุ่นอะไรไปแล้วบ้างผ่านคำสั่งนี้ phpbrew list และสลับไปใช้รุ่นต่างๆสำหรับ PHP CLI ด้วยคำสั่ง phpbrew use 5.6.16 หรือ phpbrew switch 5.6.16 โดยคำสั่ง use เป็นการใช้แบบชั่วคราว และคำสั่ง switch เป็นการเปลี่ยนไปถาวรจนกว่าจะเปลี่ยนเป็นอย่างอื่น.

การสลับรุ่น PHP บน Apache

การสลับรุ่น PHP บน Apache นั้นมีขั้นตอนอีกนิดหน่อย เนื่องจากตัว PHPBrew เองไม่ได้ทำมาสำหรับสลับรุ่นบน Apache โดยเฉพาะ ดังนั้นเราจึงต้องเขียนคำสั่ง bash script สำหรับงานนี้.

พิมพ์ sudo -i เพื่อใช้งานเป็น root user ในหน้า terminal, ssh อาจถามหารหัสผ่านของ root ให้กรอกรหัสผ่านนั้น.

พิมพ์คำสั่ง gedit /var/www/apache-php56.sh โดยสมมุติว่าไฟล์นี้สำหรับสลับรุ่นไปยัง PHP 5.6 หลังพิมพ์คำสั่งนี้จะมีการเปิดหน้า text editor ขึ้นมาอัตโนมัติ ให้ copy & paste คำสั่งต่อไปนี้ลงไปแล้วเปลี่ยนเลขรุ่น PHP ให้ตรงกับที่ได้ติดตั้งไปแล้ว

#!/bin/bash 
# Change Apaches PHP Module to 5.6.x
echo "Loading PHP 5.6.16 ..."
echo "LoadModule php5_module /usr/lib/apache2/modules/libphp5.6.16.so" > /etc/apache2/mods-available/php5.load
echo "Restarting Apache2"
sudo service apache2 reload

หรือตัวอย่างสำหรับ PHP 5.5.30 (gedit /var/www/apache-php55.sh)

#!/bin/bash 
# Change Apaches PHP Module to 5.5.x
echo "Loading PHP 5.5.30 ..."
echo "LoadModule php5_module /usr/lib/apache2/modules/libphp5.5.30.so" > /etc/apache2/mods-available/php5.load
echo "Restarting Apache2"
sudo service apache2 reload

หรือตัวอย่างสำหรับ PHP 7.0.0 (gedit /var/www/apache-php70.sh)

#!/bin/bash 
# Change Apaches PHP Module to 7.0.x
echo "Loading PHP 7.0.0 ..."
echo "LoadModule php7_module /usr/lib/apache2/modules/libphp7.0.0.so" > /etc/apache2/mods-available/php5.load
echo "Restarting Apache2"
sudo service apache2 reload

ข้อสังเกตุ กรณีที่ติดตั้ง PHP ต่างรุ่นเช่น PHP 5 & PHP 7 การเขียนไฟล์ .sh เพื่อเปลี่ยนรุ่นบน Apache ก็จะยังคงสั่งให้โหลดค่าไปยังไฟล์ php5.load อยู่ดี เนื่องจากมันมีการติดตั้ง php5.conf ในกระบวนการติดตั้ง Apache & PHP และชื่อไฟล์ .load ต้องมีชื่อตรงกัน แต่การทำงานยังสามารถทำได้ไม่มีปัญหานะครับ.

กำหนด permission ให้ไฟล์ที่สร้างใหม่เหล่านี้สามารถรันได้ด้วยคำสั่ง chmod +x /var/www/apache-php56.sh โดยสำหรับ PHP รุ่นอื่นๆ เช่น จากตัวอย่างที่ได้กำหนดสร้างไฟล์ apache-php55.sh ก็ให้ระบุชื่อไฟล์ให้ถูกต้อง chmod +x /var/www/apache-php55.sh

คำสั่งในการสลับรุ่น PHP บน Apache นั้นก็ง่าย เพียงแค่พิมพ์ชื่อไฟล์ลงไป เช่น /var/www/apache-php56.sh

ทดลองเรียกดูหน้าเว็บผ่าน http://localhost/info.php โดยไฟล์ info.php คือไฟล์ที่เรียกดู phpinfo(); อยู่ข้างใน เมื่อเรียกดูแล้วก็น่าจะพบ PHP ตรงรุ่นตามที่ต้องการ และเมื่อสลับไปยังรุ่นอื่นๆที่ติดตั้งแล้ว เช่น /var/www/apache-php55.sh แล้ว reload หน้าเว็บดูใหม่ก็น่าจะพบว่า PHP ได้เปลี่ยนรุ่นไปตามที่สั่งแล้ว.

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>