Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

อัปเกรด PHP 5.x เป็น PHP 7 บน CentOS 7

คู่มืออัปเกรด PHP 5.x เป็น PHP 7.x บน CentOS 7/RHEL 7 โดยใช้ IUS Repository (เพราะ Repo Oficial ไม่มี PHP 7)

ข้อกำหนดเบื้องต้น

  • CentOS 7 / RHEL 7 ติดตั้ง PHP 5.x แล้ว
  • Apache กับ mod_php เปิดใช้งาน
  • สิทธิ์ Root หรือ Sudo
  • Backup ก่อนเริ่ม! (Config, Database, Code)

ขั้นตอนที่ 1: ติดตั้ง IUS Repository

# ดาวน์โหลดและติดตั้ง IUS Setup Script
curl 'https://setup.ius.io/' -o setup-ius.sh
bash setup-ius.sh

Script จะตรวจสอบ OS, ติดตั้ง EPEL และ IUS Repository อัตโนมัติ

ขั้นตอนที่ 2: ลบ PHP 5.x เก่า (mod_php)

# ดู Package ที่ติดตั้งอยู่
rpm -qa | grep php

# ลบ PHP 5.x packages
yum remove php-cli mod_php php-common php-*

ขั้นตอนที่ 3: ติดตั้ง PHP 7.x จาก IUS

# ค้นหา Package PHP 7 ที่มี
yum search php7 | grep -E 'php7[0-9]-'

# ติดตั้ง PHP 7.4 (แนะนำ LTS) + Extensions พื้นฐาน
yum install php74u-cli php74u-fpm php74u-mysqlnd php74u-gd php74u-mbstring php74u-xml php74u-json php74u-opcache php74u-curl php74u-zip php74u-intl php74u-bcmath

# สำหรับ Apache mod_php (ถ้าใช้ mod_php แทน PHP-FPM)
yum install mod_php74u

หมายเหตุ: IUS ใช้ Naming แบบ php74u-* สำหรับ PHP 7.4, php73u-* สำหรับ 7.3, ฯลฯ

ขั้นตอนที่ 4: ปรับ Config (php.ini)

# Backup config เดิม
cp /etc/php.ini /etc/php.ini.bak.5.6

# แก้ไข php.ini ใหม่ (PHP 7 default อยู่ที่ /etc/php.ini)
vi /etc/php.ini

# การตั้งค่าสำคัญ:
# memory_limit = 256M
# upload_max_filesize = 20M
# post_max_size = 20M
# max_execution_time = 300
# date.timezone = Asia/Bangkok
# opcache.enable=1
# opcache.memory_consumption=128

ขั้นตอนที่ 5: Restart Services

# Apache + mod_php
systemctl restart httpd

# หรือ PHP-FPM (แนะนำสำหรับ Production)
systemctl restart php-fpm
systemctl restart nginx  # ถ้าใช้ Nginx

ขั้นตอนที่ 6: ทดสอบ

# CLI
php -v
# PHP 7.4.x (cli) (built: ...)

# Web: สร้าง info.php
echo ' /var/www/html/info.php
# เปิด https://your-server/info.php

ขั้นตอนที่ 7: ทดสอบ Application (สำคัญ!)

  • รัน Test Suite (PHPUnit, Codeception)
  • ตรวจสอบ Deprecated Warnings ใน Log
  • ทดสอบ Feature หลัก: Login, Form Submit, API, Report
  • ตรวจสอบ Extensions: Redis, Memcached, MongoDB, etc.

ปัญหาที่พบบ่อย (Breaking Changes PHP 5 → 7)

ปัญหาPHP 5PHP 7แก้ไข
mysql_* functionsทำงานRemovedใช้ mysqli หรือ PDO
split()ทำงานRemovedใช้ preg_split/explode
each()ทำงานDeprecated → Removed 8.0ใช้ foreach
Constructor Name = Class NameทำงานDeprecatedใช้ __construct()
Static Call Non-static MethodWarningError/Deprecatedสร้าง Instance ก่อน
Uniform Variable Syntax$obj->$prop['key']($obj->$prop)['key']เพิ่ม Parentheses

Rollback Plan (ถ้ามีปัญหา)

# ลบ PHP 7
yum remove php74u* mod_php74u

# ติดตั้ง PHP 5.6 กลับ (จาก Repo เดิม หรือ IUS php56u)
yum install php56u-cli php56u-fpm php56u-mysqlnd ...

systemctl restart httpd/php-fpm