บทความนี้จะขอกล่าวถึงขั้นตอนในการ upgrade PHP version เก่า ให้เป็น PHP v7 ซึ่งเป็น version ใหม่ ของปี 2015 ซึ่งเป็นของใหม่ อยู่ ณ. ตอนนี้ และตอนนี้ Server หรือ Hosting บางเจ้า เริ่มทะยอย upgrade กันไปบ้างไปแล้ว
สำหรับฟีเจอร์ใหม่ๆของ PHP v7 ก็ตามข้างล่างเลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PHP 7.0.0 comes with a new version of the Zend Engine, numerous improvements and new features such as Improved performance: PHP 7 is up to twice as fast as PHP 5.6 Significantly reduced memory usage Abstract Syntax Tree Consistent 64-bit support Improved Exception hierarchy Many fatal errors converted to Exceptions Secure random number generator Removed old and unsupported SAPIs and extensions The null coalescing operator Return and Scalar Type Declarations Anonymous Classes Zero cost asserts |
วันนี้ก็เลยมาถึงตาเว็บเรา ต้อง upgrade ตามกระแสบ้างนะครับ
ในขั้นตอนการ upgrade ก็ไม่ค่อยมีไรยุ่งยากเท่าไร ครับบ ว่าแล้วมาเริ่มกันเลยย !!
อันดับแรก ทำการ ติดตั้ง Package RPM ก่อน
1 2 3 4 5 6 |
CentOS/RHEL 7.x: (สำหรับ CentOS 7.X) rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm CentOS/RHEL 6.x: (สำหรับ CentOS 6.X) rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm |
ในที่นี้ จะทดสอบกับ CentOS 7 x64
จากนั้นทำการ Install package “yum-plugin-replace”
1 |
yum install php70w php70w-opcache |
ตามด้วย
1 2 |
yum install yum-plugin-replace yum replace php-common --replace-with=php70w-common |
จะเห็นว่า มี Package ที่มัน Dependencies อยู่ ให้ตอบ Y ไปเลย
มันจะทำการลบ Package เก่าออก แล้วทับด้วย Package ใหม่ สำหรับ PHP v7
ต่อมาก็ทำการ ติดตั้ง php70w-opcache
1 |
yum install php70w-opcache |
อยากลืมติดตั้ง package เหล่านี้เพิ่มเข้าไปด้วยนะครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
yum install -y \ autoconf \ bison \ curl-devel \ gcc \ git \ freetype\ freetype-devel \ libpng\ libpng-devel \ libxml2\ libxml2-devel \ libXpm\ libXpm-devel \ libmcrypt \ libmcrypt-devel \ mysql \ mysql-devel \ openssl \ openssl-devel \ recode \ recode-devel \ pkgconfig \ bzip2-devel \ libjpeg-devel \ gmp-devel \ mariadb-devel \ aspell-devel \ httpd-devel |
แล้วลองตรวจสอบดูว่า ตอนนี้มัน upgrade ไปแล้วหรือยัง
1 |
php -version |
หรือทำการตรวจสอบผ่าน phpinfo();
1 |
php -r "phpinfo();" |
หรือถ้าให้ชัวส์จริงๆ ก็อาจจะสร้างไฟล์ phpinfo.php ขึ่นไปวางบน Server แล้วทดสอบรันดูก็ได้ครับ
1 2 |
vi /var/www/html/phpinfo.php <?php phpinfo(); ?> |
อย่าลืม restart service ด้วยนะครับ
1 |
service httpd restart |
ทำการทดสอบเข้าเว็บอีกที เย้…!!! รันได้ละ 🙂
แถม.. อีกเรืองนะครับ.. เนื่องจาก PHPv7 นั้น มันจะใช้งาน mysql_connect ไม่ได้นะครับ เพราะใน PHP 7 มันถูกตัดออกไปเรียบร้อยแล้ว
1 |
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/html/xxx .. |
อาจจะต้องเปลียนมาใช้ mysqli_connect แทน ถ้าใครใช้ CMS WordPress version ใหม่ๆ จะ supported PHP 7.X อยู่แล้ว
แต่ถ้าหากเป็น CMS เก่าๆ ที่ยังใช้ mysql_connect อยู่ ก็จะมีปัญหาไม่สามารถ connect database นั่งเอง.. อ้าว สะงั้น. ^ ^”
ยังใงท่านที่คิดจะย้ายไป PHP 7 อย่าลืมมองถึงจุดนี้ด้วยนะครับ เพราะมีหลายๆ function มันถูกตัดทิ้งไปเยอะเหมือนกัน
ยกตัวอย่าง webboard ของผม SMF 2.0.11 (lasted version) หลังจากที่ upgrade จะพังเช่นกัน
งั้นมาเริ่ม Fixed ปัญหานี้ด้วยสะเลย จากนั้นผมได้ทำการ remove package “php70w-mysql” ออก
แล้วทำการลง “php70w-mysqlnd” (2 ตัวนี้ ต้องเลือก อย่างใด อย่างนึง เพราะลงพร้อมกันไม่ได้)
1 2 |
yum remove php70w-mysql yum install php70w-mysqlnd |
จากนั้นผมได้ทำการเปลียน DatabaseType ใหม่ โดยแก้ mysql_ xxx => mysqli_xxx ทั้งหมด
ใน SMF Subs-Db-mysql.php
ถ้าใครไม่อยากแก้ manual เอง แนะนำให้ download mod : MySQLi มาทับไฟล์เดิมได้เลย
จากนั้นก็เปลียน $db_type เป็น ‘mysqli’ ในไฟล์ Settings.php
http://custom.simplemachines.org/mods/index.php?mod=3469
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Example : Setttings.php <?php /** * Simple Machines Forum (SMF) * * @package SMF * @author Simple Machines http://www.simplemachines.org * @copyright 2011 Simple Machines * @license http://www.simplemachines.org/about/smf/license.php BSD * * @version 2.0 */ ########## Database Info ########## $db_type = 'mysqli'; //Changed from mysql to mysqli $db_server = 'localhost'; $db_name = 'testDB'; $db_user = 'root'; $db_passwd = '1234@passs'; $ssi_db_user = ''; $ssi_db_passwd = ''; $db_prefix = 'wb_'; $db_persist = 0; $db_error_send = 0; ..... |
จากนั้นเข้าเว็บแล้ว refresh อีกที…
คราวนี้สามารถใช้งานได้ปรกติละครับ เย้ !!!
บทความนี้น่าจะเป็นประโยชน์สำหรับท่านที่กำลังสนใจที่จะ Upgrade PHP version เก่า ไปเป็น PHP 7.X ก็ลองเล่นดูครับ
หากมีข้อผิดพลาดประการใด ขออภัยมา ณ ที่นี้ด้วยนะครับ
ขอบคุณครับ
Admin@rockdevper
Ref
https://webtatic.com/packages/php70/
How to Install PHP 7 with Apache and MariaDB on CentOS 7/Debian 8
Comments are closed