ติดตั้ง PHP บน CentOS 7

เว็บเซิร์ฟเวอร์ที่ได้จาก ติดตั้งและคอนฟิกเว็บเซิร์ฟเวอร์ Apache บน CentOS 7 เบื้องต้น จะรองรับไฟล์เว็บ .html ธรรมดาเท่านั้น ไม่สามารถเขียนเว็บโปรแกรมเพื่อประมวลผลบนเซิร์ฟเวอร์ก่อนแสดงผลได้ (Server-side scripting)

หากต้องการเขียนโปรแกรมเช่น php ต้องติดตั้งโมดูล (Apache Module) เพื่อโหลดในเว็บเซิร์ฟเวอร์เพิ่มเติม

ใช้คำสั่ง yum install ติดตั้งแพ็กเกจ php

[root@cent7 ~]# yum install php
...
Installed:
  php.x86_64 0:5.4.16-36.el7_1

Dependency Installed:
  libzip.x86_64 0:0.10.1-8.el7
  php-cli.x86_64 0:5.4.16-36.el7_1 
  php-common.x86_64 0:5.4.16-36.el7_1

Complete!

ลองใช้คำสั่ง rpm เพื่อดูรายชื่อไฟล์ที่ติดตั้งจากชื่อแพ็กเกจ php

[root@cent7 ~]# rpm -ql php
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.modules.d/10-php.conf
/usr/lib64/httpd/modules/libphp5.so
/usr/share/httpd/icons/php.gif
/var/lib/php/session

ส่วนสำคัญของการติดตั้งแพ็กเกจ php คือการติดตั้งไฟล์ libphp5.so ซึ่งใช้โหลดเป็นโมดูลใน Apache และไฟล์คอนฟิก php.conf และ 10-php.conf เพื่อคอนฟิกให้เว็บเซิร์ฟเวอร์รองรับการเขียนโปรแกรมภาษา php ได้

ตัวอย่างออปชันในไฟล์คอนฟิก php.conf เพื่อให้ Apache จัดการไฟล์ (SetHandler) ที่ลงท้ายด้วย .php ให้รันประมวลด้วย php ก่อนแสดงผล

[root@cent7 ~]# cat /etc/httpd/conf.d/php.conf
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>
...

รีสตาร์ตเซอร์วิส httpd เพื่อให้ Apache โหลดโมดูล php เพิ่มเติม และให้คอนฟิกใหม่มีผล

[root@cent7 ~]# systemctl restart httpd

ลองสร้างไฟล์ php ขึ้นมาทดสอบ

[root@cent7 ~]# cd /var/www/html/
[root@cent7 html]# vi test.php
<?php
phpinfo();
?>

วิธีการทดสอบที่นิยมกันมากที่สุดก็คือใช้ฟังก์ชัน phpinfo() เพื่อแสดงข้อมูลรายละเอียดของ php ทั้งหมดที่ติดตั้งไว้

ตัวอย่างการเรียกหน้าเว็บ test.php จากหน้า browser
p01-phpinfo

php ที่เพิ่งติดตั้งไป สามารถเขียนโปรแกรม เรียกใช้งานฟังก์ชันพื้นฐานได้

แต่ถ้าต้องการเรียกใช้ฟังก์ชันอื่นๆ เพิ่มเติมได้ เช่นใช้ฟังก์ชันในการเชื่อมต่อเข้า MySQL ก็ต้องติดตั้งโมดูล php-mysql

[root@cent7 ~]# yum install php-mysql
...
Installed:
  php-mysql.x86_64 0:5.4.16-36.el7_1

Dependency Installed:
  php-pdo.x86_64 0:5.4.16-36.el7_1

Complete!

หลังติดตั้งโมดูล php เพิ่มเติม ก็ต้องรีสตาร์ตเซอร์วิส httpd ด้วยเพื่อให้ Apache โหลดโมดูล php ใหม่ทั้งหมดอีกครั้ง

[root@cent7 ~]# systemctl restart httpd

รีเฟรซหน้าเว็บ test.php ใน browser อีกครั้ง

ตัวอย่างข้อมูลโมดูล php-mysql จากฟังก์ชัน phpinfo()
p02-php-mysql

ข้อมูลอ้างอิง

Leave a Reply