ติดตั้งโมดูล PHP เพิ่มเติม บน CentOS 6 « SpaLinux.com – สปาลีนุกซ์
ติดตั้งโมดูล PHP เพิ่มเติม บน CentOS 6
Monday 16 April 2012 @ 11:00 pm

จากการ ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache

เว็บเซิร์ฟเวอร์ Apache และ PHP เครื่องนี้ สามารถเขียนเว็บเพจโดยใช้ภาษา PHP ได้แล้ว  แต่สามารถเรียกใช้ฟังก์ชั่นแค่พื้นฐานเท่านั้น  ถ้าต้องการใช้ฟังก์ชั่นอื่นๆ ด้วย เช่นเชื่อมต่อเข้ากับ MySQL เราจำเป็นต้องติดตั้งโมดูล PHP เพิ่มเติม

ในบทความนี้จะอธิบายวิธีการตรวจสอบและติดตั้งโมดูลเพิ่มเติมจากไฟล์ rpm ที่อยู่ในแผ่นดีวีดี CentOS 6.2  โดยจะเป็นการติดตั้งโมดูล MySQL เพื่อให้สามารถเขียน PHP เชื่อมเข้ากับฐานข้อมูล MySQL ได้

ตัวอย่าง error เมื่อเรียกใช้ฟังก์ชั่นของโมดูลที่ไม่มีหรือยังไม่ได้ติดตั้ง

[root@cent6 ~]# cat test-mysql.php
<?php
mysql_connect('localhost', 'mysql_user', 'mysql_password');
?>

ทดลองรันไฟล์นี้ด้วย php

[root@cent6 ~]# php test-mysql.php
PHP Fatal error:  Call to undefined function mysql_connect() in /var/www/html/test-mysql.php on line 2

วิธีการตรวจสอบว่า การเขียนโปรแกรมภาษา PHP บนเว็บเซิร์ฟเวอร์นี้ สามารถเรียกใช้โมดูล PHP อะไรได้บ้าง ทำได้โดยใช้ฟังก์ชั่น phpinfo() แล้วเปิดผ่านหน้าเว็บเพจ หรือรันคำสั่ง php ตามด้วยออปชั่น “-m”

[root@cent6 html]# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
json
libxml
openssl
pcntl
pcre
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
xml
zip
zlib
[Zend Modules]

 

หากต้องการเรียกใช้โมดูลมากกว่านี้ จำเป็นต้องติดตั้งเพิ่มเติม  วิธีหนึ่งคือติดตั้งจากไฟล์ rpm ในแผ่นดีวีดี CentOS 6.2

ไฟล์ rpm ใน CentOS 6.2 ที่เกี่ยวข้องกับ PHP ไม่ว่าจะเป็นส่วนโปรแกรมหลัก หรือโมดูลเพิ่มเติม จะขึ้นต้นชื่อไฟล์ด้วย php

[root@cent6 ~]# mount /dev/cdrom /mnt
 mount: block device /dev/sr0 is write-protected, mounting read-only
[root@cent6 ~]# cd /mnt/Packages/
[root@cent6 Packages]# ls -l php-*
-rw-r--r--. 2 500 500 1176604 Nov 15 18:02 php-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 2276776 Nov 15 18:02 php-cli-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  534024 Nov 15 18:02 php-common-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  105780 Nov 15 18:02 php-gd-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   36360 Nov 15 18:02 php-ldap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   80300 Nov 15 18:02 php-mysql-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   49116 Nov 15 18:02 php-odbc-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   74148 Nov 15 18:02 php-pdo-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  402492 Dec  9 03:54 php-pear-1.9.4-4.el6.noarch.rpm
-rw-r--r--. 2 500 500   95556 Jul  3  2011 php-pecl-apc-3.1.3p1-1.2.el6.1.x86_64.rpm
-rw-r--r--. 2 500 500   61400 Sep 26  2011 php-pecl-memcache-3.0.5-3.el6.x86_64.rpm
-rw-r--r--. 2 500 500   69044 Nov 15 18:02 php-pgsql-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  140600 Nov 15 18:02 php-soap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  102132 Nov 15 18:02 php-xml-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   50964 Nov 15 18:02 php-xmlrpc-5.3.3-3.el6_1.3.x86_64.rpm

ใช้คำสั่ง rpm เพื่อติดตั้ง module เพิ่มเติม สำหรับการติดตั้ง MySQL module

[root@cent6 Packages]# rpm -i php-mysql-5.3.3-3.el6_1.3.x86_64.rpm
error: Failed dependencies:
 php-pdo is needed by php-mysql-5.3.3-3.el6_1.3.x86_64

ต้องติดตั้ง php-pdo (PDO module) ก่อน

[root@cent6 Packages]# rpm -i php-pdo-5.3.3-3.el6_1.3.x86_64.rpm
[root@cent6 Packages]# rpm -i php-mysql-5.3.3-3.el6_1.3.x86_64.rpm

ใช้คำสั่ง php ออปชั่น -m เพื่อตรวจสอบ module ที่ติดตั้งเพิ่มเติม

[root@cent6 Packages]# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
json
libxml
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
zip
zlib
Zend Modules]

คำอธิบาย

  • PDO, pdo_sqlite, sqlite3 ได้จากการติดตั้งไฟล์ php-pdo
  • mysql, mysqli, pdo_mysql ได้จากการติดตั้งไฟล์ php-mysql

 

หลังจากการติดตั้ง PHP module เพิ่มเติม การรัน PHP ที่เป็น command line สามารถเรียกใช้โมดูลใหม่นี้ได้เลย แต่ถ้าต้องการเรียกผ่านเว็บเซิร์ฟเวอร์ ต้องรีสตาร์ตเซอร์วิส httpd ก่อน

ใช้คำสั่ง service เพื่อรีสตาร์ตเซอร์วิส httpd

[root@cent6 Packages]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

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

[root@cent6 ~]# cat /var/www/html/info.php
 <?php
 phpinfo();
 ?>

ผลลัพธ์ที่ได้จากการเรียกผ่านหน้าเว็บ

 




Leave a comment