วันศุกร์ที่ 27 ตุลาคม พ.ศ. 2549

ติดตั้ง PHP5 แบบที่ 2

ติดตั้ง PHP5
# cd /usr/ports/lang/php5
# make config
เลือกค่าต่างๆตามที่จะใช้งาน ผมไม่เลือก debug อยู่อันเดียว นอกนั้นเอาหมด คิคิ
#make install clean

พอติดตั้งเสร็จก็จัดการกะไฟล์คอนฟิก (php.ini)
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
จากนั้นก็ปรับแต่งไฟล์ php.ini
# ee /usr/local/etc/php.ini
บรรทัด
;default_charset = "iso-8859-1"
เอาเครื่องหมาย ; ข้างหน้าออกแล้วแก้ไขเป็น
default_charset = "tis-620"

บรรทัด
;upload_tmp_dir =
เอาเครื่องหมาย ; ข้างหน้าออกแล้วแก้ไขเป็น
upload_tmp_dir = "/tmp/uptmp"

บรรทัด
;session.save_patch = "/tmp"
เอาเครื่องหมาย ; ข้างหน้าออกแล้วแก้ไขเป็น
session.save_patch = "/tmp/sesstmp"
เซฟไฟล์

สร้างไดเรคทอรี่ขึ้นมาที่ /tmp 2 อันชื่อ upload, session
# mkdir /tmp/uptmp
# mkdir /tmp/sesstmp

chmod ให้เป็น 777 ทั้ง 2 ไดเรคทอรี่
# chmod 777 /tmp/uptmp
# chmod 777 /tmp/sesstmp

แก้ไขไฟล์ httpd.conf เพื่อให้รองรับ php
# ee /usr/local/etc/apache22/httpd.conf

ค้นหาบรรทัด
Directoryindex index.html
เพิ่ม index.php และ index.phps เข้าไป เป็น
Directoryindex index.html index.php index.phps index.phtml index.cgi index.pl

ค้นหาบรรทัด
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
เพิ่มคำสั่งนี้ต่อท้ายลงไป
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
เซฟไฟล์แล้ว restart apache ใหม่
# /usr/local/etc/rc.d/apache22.sh restart

สร้างไฟล์ทดสอบการทำงานของ php
#ee /usr/local/www/apache22/data/test.php
ใส่คำสั่งนี้ลงไป
echo phpinfo();
?>
เซฟไฟล์ ใช้บราวส์เซอร์ทดลองเรียกดู
http://www.my-office.com/test.php
มีหน้าสีม่วงๆแจงรายละเอียดต่างๆขึ้นมา ถือว่าผ่านล่ะครับ

ต่อไปทำการติดตั้ง Extensions ต่างๆของ PHP5
# cd /usr/ports/lang/php5-extensions
# make config
เลือก extention ต่างๆตามที่จะใช้งาน
# make install clean
พอเสร็จก็สั่ง restart apache อีกที
# /usr/local/etc/rc.d/apache22.sh restart
ลองเรียกหน้า test.php ดู
http://www.my-office.com/test.php
จะมีรายละเอียดต่างๆของ Extensions เพิ่มเข้ามาเป็นอันเรียบร้อยสำหรับ PHP5

ปัญหาเวลาติดตั้ง php-extensions เสร็จทำให้ apache start ไม่ขึ้น เล่นเอาผมมึนอยู่นานสองนาน พอค้นดู error log ก็ได้รู้ว่าเกิดจาก extension imap.so ของ php ก็เลยทดลองปิด extension = imap.so แค่นั้นแหละ apache start ขึ้นได้ปกติ ทีนี้ก็เลยติ๊ต่าง(เดา)เอาว่าน่าจะเกิดจากลำดับการทำงานของแต่ละ extension จัดแจงย้าย extension = imap.so ลงไปไว้บรรทัดล่างสุดและก็ลอง restart apache ดูใหม่ ทีนี้ไม่มีปัญหาใดๆเลยครับ ดูที่หน้า info ของ php ก็มี extension imap โผล่มาให้เห็น Cheesy

# ee /usr/local/etc/php/extensions.ini

extension=bcmath.so
extension=bz2.so
extension=calendar.so
extension=ctype.so
extension=curl.so
extension=dba.so
extension=dom.so
extension=exif.so
extension=ftp.so
extension=gd.so
extension=gettext.so
extension=iconv.so
extension=imagick.so
;extension=imap.so
extension=ldap.so
extension=mbstring.so
extension=mcrypt.so
extension=mhash.so
extension=ming.so
extension=mysql.so
extension=mysqli.so
extension=odbc.so
extension=openssl.so
extension=pcre.so
extension=pdf.so
extension=zlib.so
extension=pdo.so
extension=posix.so
extension=recode.so
extension=session.so
extension=simplexml.so
extension=snmp.so
extension=soap.so
extension=sockets.so
extension=sqlite.so
extension=tokenizer.so
extension=xml.so
extension=xmlreader.so
extension=xmlrpc.so
extension=xmlwriter.so
extension=xsl.so
extension=yaz.so
extension=zip.so

กำหนดค่า ServerName ด้วยครับ เช่น localhost ก็ได้ครับ

ไม่ใช่ error นะครับ มันแค่ฟ้องว่า configuration ไม่ถูกต้อง httpd ก็ start ได้ด้วยกรณีแบบนี้

ตัวอย่าง
ServerName thaifreebsd.org:80


SSL ไปดูด้านล่างๆของ httpd.conf ตรงนี้แล้วเอา # (comment) ออก
# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf

เช็ค httpd ก่อน start ด้วยคำสั่ง
/usr/local/sbin/apachectl configtest

นอกนั้นให้ดู errorlog ของ httpd ประกอบในการติดตามแก้ปัญหาการ config ครับ

โปรแกรม httpd.conf อยู่ตรงนี้ครับ
/usr/local/etc/apache22/httpd.conf
edit @ 2006/10/10 23:30:26

ไม่มีความคิดเห็น: