จากการ ติดตั้งโปรแกรมภาษาเว็บ 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(); ?>
ผลลัพธ์ที่ได้จากการเรียกผ่านหน้าเว็บ