เว็บเซิร์ฟเวอร์ที่ได้จาก ติดตั้งและคอนฟิกเว็บเซิร์ฟเวอร์ 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
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()
ขอถามหน่อยนะครับ พอผมติดตั้งแล้วผมลองเช็คไฟล์ดูว่าครบป่าวผมเช็คแล้ว ไฟล์ที่ชื่อว่า 10-php.conf มันไม่มีในที่ผมเช็คมา เปิดหาในโฟเดอร์ก็ไม่มีครับ พอมีวิธีแก้มั้ยครับ