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

การติดตั้ง FreeBSD 6.1 พื้นฐาน

วันนี้ล้างเครื่องติดตั้ง FreeBSD 6.1 ใหม่ (โดยคุณบาทเดียว)

พอดีหัวหน้าอยากได้ server แกร่งๆหน่อยและก็ไม่ต้องใช้ทรัพยากรณ์มาก เอาไว้ทำงาน ผมก็เสนอไปว่า FreeBSD หัวหน้าก็เห็นชอบด้วย(ผมโม้ไปซะเยอะ) ยกเครื่องมาตั้งให้ผม ผมจัดแจงตรวจสอบสเปคทันที
Celeron 800 MHz
SDRAM 128 MB
HDD 20 GB
LAN 1 Port
VGA on Board i810

หลังจากตรวจเช็คอุปกรณ์เสร็จแล้วก็จัดแจงติดตั้ง FreeBSD 6.1 ทันที ผ่านไปด้วยดีครับ
อ้อ..ในระหว่างติดตั้งไม่ได้เลือก x-Window ใดๆเลย
หลังจากติดตั้ง OS เสร็จก็ตรวจสอบระบบเน็ตเวิร์คว่าต่อเน็ตได้หรือไม่ Login เข้าได้หรือไม่ ทุกอย่างผ่านไม่มีที่ติ
จากนั้นก็การทำ cvsup เพื่อปรับปรุง ports

ติดตั้ง cvsup
# cd /usr/ports/net/cvsup-without-gui
# make install && make clean
# rehash

ทำการ synchronize ports index กับ cvsup server
# /usr/local/bin/cvsup -g -L 2 -h cvsup2.freebsd.org /usr/share/examples/cvsup/ports-supfile
นังจิบกาแฟรอจนกว่าจะติดตั้งเสร็จ นานเอาการเหมือนกัน
# cd /usr/ports && make fetchindex
เรียบร้อยไม่มีอะไรติดขัด การอัพเดท ports

จากนั้นผมติดตั้ง Perl 5.8 ก่อนเพื่อนเลย
# cd /usr/ports/lang/perl5.8
# make ? WITH_GDBM=yes ? WITHOUT_PERL_64BITINT=yes ? WITH_THREADS=yes ? ENABLE_SUIDPERL=yes ? install && make clean
ในระหว่างนี้ก็นั่งโม้ให้เด็กฝึกงานฟัง อิอิ จนติดตั้งเสร็จ


ต่อไปก็จับ MySQL มาติดตั้ง ผมใช้ 5.0 ไหนๆก็ใช้ FreeBSD ตั้ง 6.1 แล้วนี่นา
# cd /usr/ports/databases/mysql50-server
# make ? WITH_CHARSET=tis620 ? WITH_XCHARSET=all ? WITH_COLLATION=tis620_thai_ci ? WITH_OPENSSL=yes ? BUILD_OPTIMIZED=yes ? WITH_ARCHIVE=yes ? WITH_FEDERATED=yes ? WITH_NDB=yes ? install && make clean
รอนานเลยครับคราวนี้ ลงไปหาข้าวรองท้อง กลับขึ้นมาก็เสร็จพอดี

ทีนี้ก็จัดการไฟล์คอนฟิก (my.cnf)
เนื่องจากเครื่องที่ใช้ทำ server มีแรมอยู่แค่ 128 MB ก็เลยใช้ไฟล์ my-medium.cnf มาทำไฟล์คอนฟิก my.cnf
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# chown root:sys /etc/my.cnf
# chmod 644 /etc/my.cnf
# rehash

จากนั้นก็จัดการใส่ password ให้กับ root ต้องสั่ง start mysql ให้ทำงานก่อน
# /usr/local/etc/rc.d/mysql-server start

จากนั้นก็ใส่ password ตามต้องการ
#/usr/local/bin/mysqladmin -u root password '654321'
** 654321 คือ password

ทดลองเข้าไปใช้ mysql
# mysql -u root -p654321
พอเข้าได้แล้วก็ลองใช้คำสั่งต่างๆดู
mysql>status;
mysql>show databases;
mysql>quit; อันนี้ออกจาก mysql

เพิ่มคำสั่ง mysql_enable="YES" เข้าไปที่ไฟล์ /etc/rc.conf
เพื่อให้ mysql ทำงานทุกครั้งตอนบูตเครื่อง


จากนั้นผมก็จัดการคอนฟิก DNS ยาวหน่อยเอาไว้ค่อยมาโม้ทีหลัง


พอติดตั้ง DNS เสร็จผมก็จัดการติดตั้ง Apache 2.2 ต่อไปเลย
# cd /usr/ports/www/apache22
# make ? WITH_LDAP_MODULES=yes ? WITH_MYSQL=yes ? WITH_SSL_MODULES=yes ? WITH_THREADS=yes ? install && make clean
ช่วงที่รอก็เดินไปเดินมา ไปนั่งโม้กะธุรการบ้าง

สั่ง start apache
# /usr/local/etc/rc.d/apache22.sh start
ลองเรียกหน้าเว็บดู
http://172.16.149.191 หรือ http://www.my-office.com
มีข้อความขึ้น It works! ก็คือผ่าน

เพิ่มคำสั่ง apache22_enable="YES" เข้าไปที่ไฟล์ /etc/rc.conf
เพื่อให้ apache ทำงานทุกครั้งตอนบูตเครื่อง
ส่วน ssl เอาไว้จัดการทีหลัง แล้วจะมาโม้อีกที อิอิ
-------------------------------------------------------------------------------------
ต่อไปก็ว่าด้วยการติดตั้ง 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
วันนี้เอาไว้แค่นี้ก่อนครับ Cheesy ชักจะมึนๆล่ะ
------------------------------------------------------------------------------------------
เห็นเขาว่ามันช่วยเพิ่มประสิทธิภาพของ PHP ผมก็เลยเอามาติดตั้งมั่งสิ Zend Optimizer 3.0.0
# cd /usr/ports/devel/ZendOptimizer
# make install && make clean
===> ZendOptimizer-3.0.0 :
Because of licensing restrictions, you must fetch the source distribution
manually from the http://www.zend.com/free_download/optimizer URL.
Download the source file, ZendOptimizer-3.0.0-freebsd6.0-i386.tar.gz,
and place it in /usr/ports/distfiles.
.*** Error code 1

Stop in /usr/ports/devel/ZendOptimizer.
#

โอ๊วส์.. เขาแนะนำว่าให้เข้าไปโหลดที่ URL http://www.zend.com/free_download/optimizer เองครับ เสียเวลาสมัครสมาชิกนิดนึง
จากนั้นก็ดาวน์โหลดไฟล์ที่ชื่อ ZendOptimizer-3.0.0-freebsd6.0-i386.tar.gz แล้วให้เอาไปไว้ที่ /usr/ports/distfiles
และก็สั่งติดตั้งอีกที
# cd /usr/ports/devel/ZendOptimizer
# make install && make clean

ตอนท้ายๆจะมีแนะนำ
********************************************************************************

You have installed the ZendOptimizer package.

Edit /usr/local/etc/php.ini and add:

[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20050922/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20050922/Optimizer_TS"
zend_extension="/usr/local/lib/php/20050922/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20050922/ZendExtensionManager_TS.so"

********************************************************************************

ก็เปิดไฟล์ php.ini ขึ้นมาและก็เพิ่มคำสั่งต่อท้ายลงไปล่างสุดเลยครับ
# ee /usr/local/etc/php.ini

[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20050922/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20050922/Optimizer_TS"
zend_extension="/usr/local/lib/php/20050922/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20050922/ZendExtensionManager_TS.so"

เซฟไฟล์แล้ว restart apache
# /usr/local/etc/rc.d/apache22.sh restart

edit @ 2006/10/10 21:59:00
edit @ 2006/10/10 22:36:32
edit @ 2006/10/10 22:37:09
edit @ 2006/10/10 22:37:58

การติดตั้ง Ports และการ Update Port

Ports Upgrading
คัดลอกมาจาก http://chatpong.exteen.com/20050708/freebsd-5-4
ติดตั้ง cvsup โดยไปที่ /usr/ports/net/cvsup-without-gui และทำการติดตั้งได้เลยครับ

#cd /usr/local/cvsup-without-gui
#make install clean
จากนั้นก็ทำการ synchronize ports index กับเซิร์ฟเวอร์ที่เป็น cvsup server โดยผมเลือก cvsup.jp.freebsd.org เพราะทำการ ping ดูแล้ว ได้เวลาเร็วสุด เมื่อเทียบกับเซิร์ฟเวอร์อื่นๆครับ โดยใช้คำสั่ง

#/usr/local/bin/cvsup -g -L 2 -h cvsup.jp.freebsd.org /usr/share/examples/cvsup/ports-supfile

จากนั้นก็ทำการติดตั้ง portupgrade ครับ

#cd /usr/ports/sysutils/portupgrade
#make install clean

ทำการอัพเดต ports database

#/usr/local/sbin/portsdb -Uu

ทำการค้นหาโปรแกรมที่เคยติดตั้งไปแล้ว แต่ยังไม่ใหม่ล่าสุด เพื่อทำการอัพเดตครับ

#/usr/local/sbin/portversion -l "<" ทำการอัพเดตโปรแกรมที่เคยติดตั้งแล้ว ให้ใหม่ล่าสุดครับ #/usr/local/sbin/portupgrade -arR ถ้าไม่เกิดปัญหาระหว่างการอัพเดต ก็ใช้คำสั่งถัดไปได้เลยครับ #/usr/local/sbin/pkgdb -F แต่ถ้าเกิดปัญหาขึ้นมา แบบนี้ campus# /usr/local/sbin/portsdb -Uu Updating the ports index ... Generating INDEX.tmp - please wait..make: don't know how to make describe. Stop ===> textproc/p5-Sort-PolySort failed
*** Error code 1
1 error

ก็ใช้คำสั่ง

#/usr/local/sbin/pkgdb -fu

แต่ถ้ายังเกิดปัญหาลักษณะแบบนี้ ซึ่งเกิดจากการที่เราเคยติดตั้ง และใช้งาน FreeBSD มานานแล้ว จนเวอร์ชันของ portupgrade นั้นเปลี่ยน ซึ่งลักษณะของ error เป็นดังนี้ครับ

campus# /usr/local/sbin/portsdb -Uu
Updating the ports index ... Generating INDEX.tmp - please wait..make: don't know how to make describe. Stop
===> ftp/lukemftpd failed
*** Error code 1
1 error

********************************************
Before reporting this error, verify that you are running a supported
version of FreeBSD (see http://www.FreeBSD.org/ports/) and that you
have a complete and up-to-date ports collection. (INDEX builds are
not supported with partial or out-of-date ports collections -- in
particular, if you are using cvsup, you must cvsup the "ports-all"
collection, and have no "refuse" files.) If that is the case, then
report the failure to ports@FreeBSD.org together with relevant
details of your ports configuration (including FreeBSD version,
your architecture, your environment, and your /etc/make.conf
settings, especially compiler flags and WITH/WITHOUT settings).

Note: the latest pre-generated version of INDEX may be fetched
automatically with "make fetchindex".
********************************************

*** Error code 1

Stop in /usr/ports.
*** Error code 1

Stop in /usr/ports.
failed to generate INDEX!
portsdb: index generation error

วิธีการแก้ปัญหาก็คือ ให้เอาโปรแกรม portupgrade ออกก่อน แล้วก็ทำการ ติดตั้ง portupgrade ใหม่ครับ

#cd /usr/ports/sysutils/portupgrade
#make deinstall
#make install clean
edit @ 2006/10/10 22:00:57
edit @ 2006/10/12 23:39:00

ติดตั้ง Apache2 Web Server

ติดตั้ง Apache Web Server
โดยผมจะติดตั้ง Apache2 นะครับ เราสามารถดูออพชันต่างๆ ได้ โดยใช้คำสั่ง

#make show-options

จากนั้นทำการค้นหา mirror ที่ใกล้กับเครือข่ายเราที่สุด โดยใช้คำสั่ง

#make print-closest-mirrors >> /etc/make.conf

เมื่อได้ดังนี้แล้ว ก็ทำการติดตั้งได้เลยครับ

#cd /usr/ports/www/apache2
#make install

เมื่อติดตั้งเสร็จแล้ว ก็ทำการรันโดยใช้คำสั่ง

#/usr/local/etc/rc.d/apache2.sh start

แล้วก็ลองเปิดเว็บบราวเซอร์ และเรียกไปที่เครื่องเซิร์ฟเวอร์ดูครับ จากนั้นแก้ไขที่ไฟล์ /etc/rc.conf โดยเพิ่มบรรทัด

apache2_enable="YES"

เข้าไปครับ เพื่อที่จะให้ Apache ทำงานทุกครั้งเมื่อมีการบูตเครื่องใหม่
เพิ่มเติมให้ apache2 ใช้งานภาษาไทยโดยปริยายนะครับ ทำการแก้ไขที่ไฟล์

/usr/local/etc/apache2/httpd.conf

จากนั้นทำการเพิ่มข้อความดังนี้

AddDefaultCharset TIS-620

จากนั้นก็ทำการรีสตาร์ท apache ใหม่ ก็จะสามารถใช้งานภาษาไทยได้โดยปริยายครับ

ติดตั้ง PHP5

ติดตั้ง PHP5
ในปัจจุบัน เว็บเซิร์ฟเวอร์ส่วนใหญ่ จะรองรับภาษา PHP เป็นลำดับแรกๆ เลยก็ว่าได้นะครับ ส่วนวิธีการติดตั้งบนระบบ FreeBSD นั้นก็ทำได้ไม่ยากครับ

#cd /usr/ports/www/mod_php5
#make install WITH_APACHE2=1

จากนั้นจะมีหน้าต่างให้เลือกออฟชันเพิ่มเติมครับ ผมก็เลือก Zend Optimize แล้วก็เลือก OK ครับ
เมื่อติดตั้งเสร็จแล้ว ก็ทำการเพิ่มคอนฟิกให้กับ apache ครับ โดยผมจะสร้างไฟล์คอนฟิกของ php ต่างหากเลย ก็คือ สร้างไว้ที่ /usr/local/etc/apache2/Includes ชื่อไฟล์ว่า php5.conf ครับ

#vi /usr/local/etc/apache2/Includes/php5.conf

แล้วเพิ่มข้อมูลเข้าไปดังนี้

DirectoryIndex index.php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

จากนั้นก็ทำการรีสตาร์ท apache ครับ ด้วยคำสั่ง

#/usr/local/etc/rc.d/apache2.sh restart

ทดสอบภาษา php โดยการสร้างไฟล์ info.php ขึ้นมา โดยเก็บไว้ที่ /usr/local/www/data/

#vi /usr/local/www/data/info.php

โดยมีข้อมูลดังนี้


phpinfo();
?>

จากนั้นก็ทำการเปิดเว็บบราวเซอร์เรียกไปที่ http://server/info.php โดย server เป็นหมายเลขไอพี หรือชื่อของเซิร์ฟเวอร์ของเราครับ
ต่อมา ทำการติดตั้ง extensions ของ php5 ครับ ดังนี้

#cd /usr/ports/lang/php5-extensions
#make install

จากนั้นจะมีหน้าต่างให้เลือก extension ต่างๆครับ ซึ่งก็แล้วแต่ใครจะชอบนะครับ ส่วนผมเลือกดังนี้

CALENDAR , CTYPE , DOM , FTP , GD , GMP , IMAGIC , ICONV , IMAP , MSSQL , MYSQL , MYSQLI , OPENSSL , PDF , PGSQL , SNMP , SOAP , SQLITE , XML , XMLRPC , ZLIB

ส่วนอันอื่นๆ ที่เป็นค่าปริยาย ผมก็คงไว้ครับ ไม่ได้เอาออก

ติดตั้ง MySQL5 Database Server

ติดตั้ง MySQL Database Server

ในที่นี้ผมจะติดตั้ง MySQL เวอร์ชัน 4.1 นะครับ วิธีการดังนี้ครับ

#cd /usr/ports/databases/mysql41-server

#make install WITH_CHARSET=tis620 WITH_COLLATION=tis620_thai_ci WITH_OPENSSL=yes

จากนั้นก็ทำการเพิ่มข้อมูลในไฟล์ /etc/rc.conf เพื่อให้ mysql ทำงานทุกครั้งที่บูตเครื่องใหม่ครับ

mysql_enable="YES"

ปกติ mysql จะมีไฟล์คอนฟิกที่ชื่อ my.cnf (ใน MS Windows เป็น my.ini) โดยพาธจะอยู่ที่ /etc/my.cnf ครับ แต่เราต้องทำสำเนาไฟล์จาก /usr/local/share/mysql ซึ่งจะมีไฟล์ตัวอย่างอยู่ 4 ไฟล์ด้วยกัน ดังนี้

  • my-small.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ น้อยกว่า 64 MB

  • my-medium.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 32-64 MB

  • my-large.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 512 MB

  • my-huge.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 1-2 GB

เครื่องที่ผมใช้งานอยู่ มีหน่วยความจำ 512 MB ดังนั้น ผมก็ทำสำเนาไฟล์นี้ ดังนี้ครับ

#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf

จากนั้นก็ทำการสั่งให้ mysql server เริ่มทำงานครับ

#/usr/local/etc/rc.d/mysql.server start

แล้วมันก็จะให้เพิ่มผู้ใช้งานที่ชื่อว่า root เข้าไปนะ

#mysqladmin -u root password '********';

แก้ไขไฟล์ /etc/rc.conf

#vi /etc/rc.conf

เพิ่มข้อมูลข้างล่างเข้าไปครับ

mysql_enable="YES"

อย่าลืมปรับแต่งไฟร์วอลด้วยนะ เปิดพอร์ต 3306 ให้ใช้เฉพาะ localhost ก็ได้ เพิ่มเข้าไปในไฟล์ /etc/ipf.rules

pass in log quick proto tcp from 127.0.0.1 to 127.0.0.1 port = 3306 keep state keep frags group 100

edit @ 2006/10/10 22:40:53
edit @ 2006/10/10 23:00:42

ติดตั้ง 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

การแก้ CSS style

/* สีของลิงค์ */
a:link, a:visited{
color:#FF0000;
text-decoration:none; /*<<< ตรงนี้บอกว่าไม่ต้องขีดเส้นใต้เวลาเป็นลิงค์*/
}

a:hover{
color:#FFFF00;
}
/* สองอันข้างบนนี้ไม่น่ามีไร กล่าวคือก็เป็นสีของลิงค์ ต่างๆ ที่ไม่ได้กำหนดที่อื่น */

/* ทั้งหน้ามีลักษณะเป็นอย่างไร */
.site{
margin:10px;
padding:0px;
text-align:center;
background-color: #EEEEEE;
background-image: url(http://champcpe.exteen.com/images/bck.gif); /*<< เปลี่ยน background ทั้งหน้าที่นี่ */
background-attachment : fixed /*ถ้าอยากให้ background ไม่เลื่อน ใส่บรรทัดนี้ */
}

/* ความกว้างของหน้าบลอค */
#wrapper{
width:640px; /*<< แก้ความกว้างหน้าบลอคที่นี่เป็นตัวเลขที่มากขึ้น*/
}

/* เซตความกว้างของหน้าบลอค, แบคกราวนด์ของบลอคทั้งหมดและขอบ */
#all{
width:640px; /*<< แก้ตาม width ของ wrapper */
float:left;
background-color:#FFFFFF; /* สีของภายในบลอค */
border:1px solid #000000; /* ขอบมีลักษณะอย่างไร (ความหนา, ลักษณะเส้น, สี) */
}

/* แถบบนสุด */
#uptab{
background:#AAAAAA;
border-top:1px solid #EEEEEE;
border-bottom:1px solid #777777;
height:13px;font-size:0px;
}

/*แถบกลาง หรือก็คือที่แสดงบลอค */
#midtab{
width:640px; /*<< แก้ตาม width ของ all กับ wrapper */
padding:0px;
}

/* แถบล่างสุด */
#downtab{
background:#AAAAAA;
border-top:1px solid #EEEEEE;
border-bottom:1px solid #777777;
font-size:0px;width:640px;height:13px; /*<< แก้ width ตาม all กับ wrapper */
float:left;
}

/* รูปภาพด้านบน เซตความสูงและกว้างตามภาพ */
.picture{
background-image: url(http://champcpe.exteen.com/images/head.jpg); /* เซตรูปภาพด้านบนที่นี่ */
background-repeat: no-repeat;
background-position: left top;
height: 100px; /* เซตความสูงของรูปข้างบนที่นี่ */
width: 640px; /* เซตความกว่างของรูปข้างบนที่ีีนี่ */
border-bottom:1px solid #000000; /* เซตขอบของรูปข้างบนที่นี่ */
}

.title{
font-family: "Trebuchet MS", Tahoma;
font-size: 15px;
color: #FFFFFF;
text-align:right;
padding-right:5px;
padding-bottom:30px;
vertical-align:bottom;
display:none; /*<<< ถ้าไม่อยากให้แสดง ไตเติล ใส่บรรทัดนี้ , ถ้าอยากให้แสดง เอาบรรทัดนี้ออก */
}

/* ต้องมาเซตสีไตเติลตรงนี้ด้วย */
.title a:link, .title a:visited, .title a:hover{
color:#FFFFFF;
border-color:#FFFFFF;
}

.content{
width:640px; /* เซตความกว้างตาม all กับ wrapper*/
font-family: Tahoma, "MS Sans Serif";
font-size: 12px; /* เซตขนาดฟอนต์โดยรวมที่นี่ */
color: #FFFFFF;
text-align:center;
float:left;
}

/* พวกที่แสดงเนื้อหาบลอคความกว้างเป็นเท่าไหร่ */
.leftcontent{
width:450px; /* เซตความกว้างของที่แสดงเนื้อหาบลอค ซึ่งความกว้างของ leftcontent + rightcontent=all */
float:right; /* อยากให้แสดงเนื้อหาที่ซ้ายหรือขวา */
text-align:left;
}

/* พวกที่เป็นแถบลิงค์ต่างๆ */
.rightcontent{
width:180px; /* เซตความกว้างของแถบที่เป็นลิงค์ */
float:left; /* ไม่ต้องเซตตรงนี้ */
text-align:left;
background-color:#F9F9F9; /* อยากให้แบคกราวนด์ของแถบสีมีอะไร */
border-right:1px dotted #000000;
}
.iday {

}

/* สีของหัวข้อพวก วันที่ ประเภท */
.iday h3 {
background-image: url(/global/theme/predefined/creativity/title.gif); /* ไอคอนของไตเิติลวันที่ */
background-repeat: no-repeat;
background-position: left top;
border-bottom:1px solid #FB650A;
margin:3px 14px 0px 10px;
padding:0px 0px 4px 18px;
font-size: 14px;
color:#FB650A; /* สีของวันที่ */
}

/* เรื่องหนึ่งๆ */
.entry{
padding:5px 15px 5px 15px;
margin:5px 0px 5px 0px;
border-bottom:1px solid #CCCCCC;
}

/* หัวข้อ entry จะให้เป็นรูปอะไร เซ็ต padding ตัวสุดท้ายตามความกว้างของรูป */
.entrytitle a:link, .entrytitle a:visited, .entrytitle a:hover{
background-image: url(/global/theme/predefined/creativity/titleentry.gif); /*เซตรูปของหัวข้ิอ entry */
background-repeat: no-repeat;
background-position: left top;
padding:0px 10px 0px 16px;
font-size: 12px;
text-decoration:none;
font-weight:bold;
color:#FF0000;
border:0px;
}

/* ส่วนแสดงเนื้อหา entry */
.entrycontent{
color: #000000;
padding:5px 10px 5px 16px;
color:#000000;
font-size:12px;
line-height: 1.3em;
}

/* ส่วนแสดงข้อมูลของ entry เช่นวันที่โพส */
.entryfooter{
padding:2px 2px 2px 15px;
color:#666666;
font-size:9px;
}

/* ชื่อผู้โพส */
.entryposter{
padding:0px 5px 0px 0px;
}

/* ลิงค์ไปดู comment ของ entry */
.entrycomment a:link,.entrycomment a:visited, .entrycomment a:hover{
background-image: url(/global/theme/predefined/creativity/entrycomment.gif); /* จะให้มีไอคอนอะไร */
background-repeat: no-repeat;
color:#43697C; /* สีของลิงค์ไปคอมเมนต์ */
text-decoration:none;
padding:0px 80px 0px 0px;
border-bottom:0px;
}

/* สีเวลาเอาเมาส์วางของลิงค์ที่ไปคอมเมนต์ */
.entrycomment a:hover{
color:#FF6C00;
border-bottom:0px;
}

/* แถบแสดงชื่อ */
.profile{
padding:5px; margin:0px 1px 0px 10px;
font-size:10px;
}

/* พวกหัวข้อของด้านข้าง เช่น คำว่า Recommended */
.sidebar-title{
padding:2px 0px 2px 8px;
color:#FFFFFF; /* เซตสีที่นี่ */
font-family:Tahoma;
font-size:12px;
padding-left:10px;
margin-right:1px;
background-color:#CCCCCC; /* เซตแบรคกราวนด์ของหัวข้อ ของแถบลิงค์ ที่นี่ */
}

.sidebar-item{
padding:0px 0px 0px 5px;
margin:0px 0px 10px 0px;
}

/*แต่ละไอเท็มของแถบด้านข้าง*/
.sidebar-item li{
background-repeat: no-repeat;
list-style-type: none;
margin:0px 5px 0px 10px;
padding:0px 0px 0px 15px;
background-image: url(/global/theme/predefined/creativity/bul.gif); /* เซตไอคอนของแต่ละิลิงค์ด้านข้างที่นี่ */
background-position:0px 2px;
}

.sidebar-item a:link, .sidebar-item a:visited, .sidebar-item a:hover{
font-family:"Trebuchet MS",Tahoma;
text-decoration:none;
font-size:12px; /* อยากให้แถบลิงค์มีฟอนต์ขนาดเท่าไหร่ */
border:0px;
color:#333333; /* อยากให้ลิงค์ในแถบลิงค์มีสีอะไร */
}

.sidebar-item a:hover{
border:0px;
text-decoration:underline;
}

/* ส่วนคอมเมนต์ */
.comment{
padding:2px 5px 2px 5px;
margin:10px;
border:1px dotted #CCCCCC;
border-left:10px solid #CCCCCC;
}

.commentcontent{
color: #000000;
padding:5px 5px 5px 16px;
color:#000000;
font-size:11px;
line-height: 1.3em;
}

.commentfooter{
border-top:1px solid #EEEEEE;
padding:2px 2px 2px 15px;
color:#999999;
font-size:10px;
}

.commentdetail{
padding:0px 5px 0px 0px;
}

.commentposter a:link,.commentposter a:visited,.commentposter a:hover{
text-decoration:none;
padding:0;
border-bottom:0px;
}

.commentposter a:hover{
border-bottom:0px;
}

/* ฟอร์มใส่คอมเมนต์ */
form{
padding:2px 5px 2px 20px;
margin:10px;
border:1px dotted #CCCCCC;
border-left:10px solid #CCCCCC;
font:11px Tahoma,"MS Sans Serif";
}

/* ตรง textbox ของคอมเมนต์ */
input{
font:11px Tahoma,"MS Sans Serif";
}

edit @ 2006/10/11 00:07:23

sql pass through

* Find out the member_no of the new member
If SQLExec(ThisForm.nHandle, "Select @@identity") < 0


nNewMemberID = sqlresult.exp

ตัวอย่างการสร้าง Store procedure
CREATE PROCEDURE updateadult
@member_no member_no,
@lastname shortstring = NULL,
@firstname shortstring = NULL,
@middleinitial letter = NULL,
@street shortstring = NULL,
@city shortstring = NULL,
@state statecode = NULL,
@zip zipcode = NULL,
@phone_no phonenumber = NULL
AS
DECLARE @sqlstring1 varchar(255)
DECLARE @sqlstring2 varchar(255)

IF @lastname = NULL AND @firstname = NULL AND
@middleinitial = NULL AND @street = NULL AND
@city = NULL AND @state = NULL AND
@zip = NULL AND @phone_no = NULL
BEGIN
PRINT "Nothing to do."
RETURN
END

SELECT @sqlstring1 = NULL
SELECT @sqlstring2 = NULL

IF @lastname != NULL
SELECT @sqlstring1 = @sqlstring1 + "lastname = '" +
@lastname + "',"
IF @firstname != NULL
SELECT @sqlstring1 = @sqlstring1 + "firstname = '" +
@firstname + "',"


BEGIN TRANSACTION
IF @sqlstring1 != NULL
BEGIN
SELECT @sqlstring1 = "UPDATE member SET " +

SUBSTRING(@sqlstring1, 1,
DATALENGTH(@sqlstring1) - 1) +
" WHERE member_no = " +
CONVERT(char(6), @member_no)
EXECUTE (@sqlstring1)
IF @@error != 0
BEGIN
ROLLBACK TRAN
RAISERROR('The member information was not saved.
Feel free to try again.',16,1)
RETURN
END
END
F @sqlstring2 != NULL
BEGIN
SELECT @sqlstring2 = "UPDATE adult SET " +
SUBSTRING(@sqlstring2, 1,
DATALENGTH(@sqlstring2) - 1) +
" WHERE member_no = " +
CONVERT(char(6), @member_no)
EXECUTE (@sqlstring2)
IF @@error != 0
BEGIN
ROLLBACK TRAN
RAISERROR('The member information was not saved.
Feel free to try again.',16,1)
RETURN
END
END

COMMIT TRANSACTION

โปแกรม Store procedure ในการ Remove member
CREATE PROCEDURE removemember
@member_no member_no
AS
IF NOT EXISTS
(SELECT * FROM member WHERE member_no = @member_no)
BEGIN
PRINT " Member number not found in Member table."
RETURN
END

IF EXISTS (SELECT member_no FROM juvenile
WHERE @member_no = adult_member_no)
BEGIN
RAISERROR('This member can not be deleted. He/she is
an adult with active juveniles.',16,1)
RETURN
END

IF EXISTS (SELECT member_no FROM loan
WHERE member_no = @member_no)
BEGIN
RAISERROR("This member can not be deleted. He/she has
active loans.",16,1)
RETURN
END

BEGIN TRANSACTION

IF EXISTS (SELECT member_no FROM loanhist
WHERE member_no = @member_no)
BEGIN
PRINT 'Deleting Loan History information'
DELETE loanhist WHERE member_no = @member_no
IF @@error != 0
BEGIN
ROLLBACK TRAN
RETURN
END
END

IF EXISTS (SELECT member_no FROM reservation
WHERE member_no = @member_no)
BEGIN
PRINT 'Deleting Loan Reservation information'
DELETE reservation WHERE member_no = @member_no
IF @@error != 0
BEGIN
ROLLBACK TRAN
RETURN
END
END

IF EXISTS (SELECT member_no FROM juvenile
WHERE member_no = @member_no)
BEGIN
DELETE juvenile WHERE member_no = @member_no
IF @@error != 0
BEGIN
ROLLBACK TRAN
RETURN
END
END
ELSE IF EXISTS (SELECT member_no FROM adult
WHERE member_no = @member_no)
BEGIN
DELETE adult WHERE member_no = @member_no
IF @@error != 0
BEGIN
ROLLBACK TRAN
RETURN
END
END

DELETE member WHERE member_no = @member_no
IF @@error != 0
BEGIN
ROLLBACK TRAN
RETURN
END

COMMIT TRANSACTION

edit @ 2006/10/14 12:11:13

การกำหนดสิทธิผู้ใช้งาน mysql

เราสามารถสร้างผู้ใช้งานและกำหนดให้มีสิทธิในการใช้งานแบบ ภายในหรือภายนอกอย่างง่ายๆ ดังนี้ครับ

ผมขอเขียนเฉพาะเรื่อง mysq นะครับ ผู้อ่านจะต้องศึกษาเรื่องการติดตั้งและทำการติดตั้งให้เรียบร้อยนะครับ

เข้า Mysql

#mysql mysql <-- เป็นการเลือกฐานข้อมูลที่กำหนดเรื่องสิทธิ


mysql> GRANT ALL ON *.* TO myuser@'%' IDENTIFIED BY 'mypassword';

** myuser คือ ชื่อผู้ใช้งานที่ต้องการ

** '%' คือ ทั้งหมด ไม่ว่าจะเป็น localhost หรือ ip :xx.xx.xx.xx

** mypassword คือ รหัสผ่านที่เราจะกำหนด

เมื่อเสร็จแล้ว ก็สั่ง

mysql>FLUSH PRIVILEGES;

หากต้องการจะกำหนดเฉพาะกลุ่ม IP ก็กำหนดได้เช่นกัน ดังนี้

mysql> GRANT ALL ON *.* TO myuser@'192.168.1.0/24' IDENTIFIED BY 'mypassword';

หากต้องการเฉพาะ IP ก็กำหนด เป็น 192.168.1.2 หรือ 192.168.1.0/32 เป็นต้น

ถ้าจะให้สะดวกควรจะใช้โปรแกรม ประเภท Mysql Administrator ,phpMyAdmin มาเป็นเครื่องมือเพราะจะสะดวกกว่าการใช้คำสั่งล้วนๆ


edit @ 2006/10/14 12:06:40
edit @ 2006/10/14 12:10:03
edit @ 2006/10/14 12:10:50
edit @ 2006/10/15 11:37:53

การแก้ปัญหาภาษาไทยของ Mysql

สำหรับท่านใช้ windows ผ่าน ODBC เมื่อกำหนดการเชื่อมต่อแล้ว และสั่งการ query มาจะเห็นตัวอักษรเป็น ???????? นั้นเพราะว่าตัว mysql นั้นเพิ่มการรองรับด้านภาษามากกว่า 1 ภาษา ดังนั้น เราต้องบอกเครื่องให้แสดงข้อมูลที่ถูกต้องด้วยการเพิ่มคำสั่ง

SET character_set_results=tis620 ในช่อง initial statment ที่ tab connection option

สำหรับ อื่นๆ ลองดูจากชุดคำบอกเล่านี้ครับ
เราสามารถ แสดง Character Set Support ได้ด้วย
SHOW VARIABLES LIKE 'character%';
วิธี การ แก้คือ
1.กลับไปใช้ เวอร์ชั่น 4.0 หรือน้อย กว่า แนะนำให้ใช้ 4.0.42
2.ใช้ Character Set เป็น utf-8
3.เพิ่ม คำสั่งนี้ในขั้นตอนการติดต่อ ฐานข้อมูล
$charset = "SET character_set_results=tis620";
mysql_query($charset) or die('Invalid query: ' . mysql_error());
คัดลอกจากที่นี่ครับ


edit @ 2006/10/14 12:56:18

FOxpro ร่วมกับ MYSQL แบบ pass-through

เป็นตัวอย่างของคำสั่งของ Foxpro ครับ



connectmy = ;

"Driver={MySQL ODBC 3.51 Driver};" + ;

"Server=192.168.1.100;" + ;

"UID=phadet;" + ;

"PASSWORD=enigma;" + ;

"Database=phadet;" +;

"Port=3306;" + ;

"STMT=set names tis620;"+; <-- หากไม่ใส่ตรงนี้จะทำให้ข้อความเป็น ????

"Option= 0;"

WAIT WINDOW connectmy

gnHandle = SQLSTRINGCONNECT(connectmy)

SELECT reserv

SCAN

sqltext="INSERT INTO phadet.reserv (rcode,cust_name,occupid,add1,add2) value ("

sqltext=sqltext + "'"+ALLTRIM(rcode)+"','"+ALLTRIM(cust_name)+"','"+ALLTRIM(occupid)+"','"+ALLTRIM(add1)+"','"+ALLTRIM(add2)+"')"

resulttext=SQLEXEC(gnHandle, sqltext)

ENDSCAN



*SQLEXEC(gnHandle, "SELECT * FROM customer")


= SQLDISCONNECT(gnHandle)



edit @ 2006/10/14 15:16:25
edit @ 2006/10/14 15:25:09

การกำหนด password ของ root ใน UBUNTU

สำหรับการติดตั้ง Linux UBUNTU แล้ว จะไม่มีให้กำหนดรหัสผ่าน ของ root นั้น แต่เราสามารถกำหนดได้โดยวิธีดังนี้
login ด้วย user ของเราที่กำหนดไว้
แล้วพิมพ์แบบนี้
$sudo passwd root
ใส่รหัสผ่านของ user เราก่อน พอขึ้นข้อความ
Enter new UNIX password:
Retype new UNIX password:
ก็ใส่รหัสผ่านของ root ได้เลย

สำหรับการกำหนดให้ sudo ไม่ต้องถามรหัสผ่านเวลาใช้ sudo
สั่ง sudo pico /etc/sudoers (ระบบจะถามรหัสผ่านก่อน)
ใส่บรรทัด myusername ALL= NOPASSWD: ALL (myusername คือ user ของเรา)
สมมุติ ว่าตอนเราติดตั้งได้สร้าง user คือ paitoon
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults

Defaults !lecture,tty_tickets,!fqdn

# User privilege specification
root ALL=(ALL) ALL
paitoon ALL= NOPASSWD: ALL
# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL

edit @ 2006/10/16 21:03:40

ปัญหา ubuntu server LAMP กับ mysqladministrator

ผมติดตั้ง ubuntu6.06 Server LAMP ครับ แต่พอใช้ mysqladministrator กลับติดต่อไม่ได้ แต่ใช้ phpMyAdmin ใช้ได้เรียบร้อย นั่งหาอยู่นาน พอดีไปเจอเรื่องการติดตั้ง UbUNTU และก็มีเขียนถึง
#bind-address           = 127.0.0.1
ใน /etc/mysq/my.cnf
ผมลองดูใน config ดังกล่าว ปรากฏว่าของผม uncomment ไว้
bind-address           = 127.0.0.1
เลยจัดการแก้ ตาม ตัวอย่าง
vi /etc/mysql/my.cnf
ให้เป็น
#bind-address           = 127.0.0.1
แล้วก็สั่งให้ทำงานใหม่ด้วย
/etc/init.d/mysql restart


เป็นอันเรียบร้อยครับ


edit @ 2006/10/15 20:41:56

การกำหนด charset เป็น tis-620 ของ Apache2 ใน ubuntu6.06

ท่านที่ติดตั้ง ubuntu6.06 แล้วต้องการกำหนด character Encoding ให้เป็น tis-620 สามารถกำหนดได้ที่
vi /etc/apache2/conf.d/charset

เปลี่ยนจาก
AddDefaultCharset UTF-8
เป็น
AddDefaultCharset TIS-620

แล้วสั่ง restart ใหม่
/etc/init.d/apache2 restart

GLPI Asset management software กับ ปัญหาภาษาไทย(บางครั้ง)

ผมติดตั้ง UBUNTU 6.06.1 server และกำหนดการติดตั้ง โปรแกรมบริหาร Asset GLPI
อาจจะมีปัญหาภาษาไทยได้ สามารถแก้ปัญหาได้โดย ทำการแก้ไขไฟล์
vi /var/www/glpi/inc/dbmysql.php

ประมาณบรรทัด 70
if ($this-dbh)
mysql_select_db($this->dbdefault) or $this->error=1;
else {
nullHeader("Mysql Error",$_SERVER........
.....
......
}
/* เพิ่มข้อมูลนี้*/
mysql_query("SET character_set_results=tis620") or die("Error query:".mysql_error());
mysql_query("SET character_set_client=tis620") or die("Error query:".mysql_error());
mysql_query("SET character_set_connection=tis620") or die("Error query:".mysql_error());
}
/**
* Execute a Mysql

ก็จะช่วยแก้ปัญหาได้ครับ

edit @ 2006/10/19 00:13:37

config phpPgAdmin

ผมเคยใช้ phpPgadmin และ หาอยู่ตั้งนานว่าทำไมถึงเข้าจัดการ postgresql ผ่านทาง web ไม่ได้ แม้ว่าจะป้อนชื่อ และรหัสผ่าน ก็แล้ว เลยต้องกลับมาดูว่าเกิดอะไรขึ้น แล้วก็พบว่าต้องดำเนินการต่อไปนี้
แก้ไข config ของไฟล์ config.inc.php ที่เก็บไว้ที่
redhat :
/var/www/html/phpPgAdmin/conf
debain, UBUNTU :
/var/www/phpPgAdmin/conf
pico /var/www/phpPgAdmin/conf/config.inc.php
ประมาณบรรทัดที่ 17
$conf['servers'][0]['host'] = '';
แก้ไขเป็น
$conf['servers'][0]['host'] = '127.0.0.1';
หรือ
$conf['servers'][0]['host'] = 'localhost';
และ ที่
$conf['extra_login_security'] = true;
แก้เป็น
$conf['extra_login_security'] = false;

สำหรับการบังคับ ให้ web page กำหนด default charset ให้เป็น WINDOWS-874
สามารถแก้ไขได้ที่ไฟล์ phpPgAdmin/lang/recoded/english.php
แก้ไข
$lang['appcharset'] = 'ISO-8859-1';
เป็น
$lang['appcharset'] = 'WINDOWS-874';

สำหรับ ตัว postgresql ต้องกำหนดด้วยครับ โดยกำหนดที่

pg_hba.conf และไฟล์ postgresql.conf
หากเป็น UBUNTU อยู่ที่
/etc/postgresql/8.1/main/
ไฟล์แรก pg_hba.conf
แก้ไข ส่วนของสิทธในการเข้าใช้งาน
host all all 0.0.0.0/24 md5 <-- เปิดให้เข้าทำงานได้ทั้งหมด
หากกำหนดเฉพาะกลุ่ม ต้องกำหนดช่วง IP
host all all 192.168.0.0/24 md5
หรือ
host all all 192.168.0.1 md5 เป็นต้น นอกจากค่า md5 แล้วยังมี password , trus

ไฟล์ที่สอง postgresql.con
ประมาณบรรทัด ที่ 48
#listen_addresses = 'localhost'
เป็น
listen_addresses = '*'

หลังจากเรียบร้อยแล้วสั่ง restart postgresql



edit @ 2006/10/21 14:32:16

กำหนดค่า ใน php.ini

เวลามีการใช้งานเกี่ยวกับการกำหนดค่าตัวแปรแบบ globals ของโปรแกรม ใน php ต้องกำหนดให้โปรแกรมรับทราบด้วยโดยกำหนดที่ php.ini
แก้
จาก register_globals = Off
เป็น register_globals = On
และยังกำหนดค่า default charset
เดิม default_charset = "iso-8859-1"
เป็น default_charset = "WINDOWS-874"

วันอังคารที่ 24 ตุลาคม พ.ศ. 2549

การ config Apache UBUNTU

สำหรับการทำงานกับโปรแกรม ของ PHP หากมีการใช้งาน เกี่ยวกับ Session ต้องกำหนดค่าให้ทำงานด้วย ดังนั้น จะต้องกำหนด ต่อไปนี้
;session.save_path ="/var/lib/php5"
เป็น
session.save_path ="/var/lib/php5"

session.auto_start=0
เป็น
session.auto_start=1

ข้อมูลของ WRT54XX

สำหรับผู้ที่สนใจเกี่ยวกับกับ Wrt54 gxx นั้น คงอยากทราบว่า มีความต่างกันอย่างไรและ จะใช้ soft ware ประเภท Third-party firmware projects เช่น DD-WRT ,OpenWRT ,Tomato อื่นๆ ได้หรือไม่

WRT54G version CPU speed RAM Flash memory S/N Prefix Notes
1.0 125 MHz 16 MB 4 MB CDF0
CDF1
20 front panel LEDs (including link/activity, collision detection and speed rating indicators for each RJ-45 port). Wireless capability was provided by a Mini PCI card attached to the router motherboard.
1.1 125 MHz 16 MB 4 MB CDF2
CDF3
Front panel LEDs reduced to 8 (1 link/activity LED per port, plus one each for power, wireless, DMZ and WAN/Internet connectivity). Wireless chipset integrated onto motherboard.
2.0 200 MHz 16 MB 4 MB CDF5 Same as 1.1 with a CPU upgrade and greater wireless transmitter integration (fewer transmitter parts).
2.2 216 MHz 16 MB 4 MB CDF7 Same physical appearance as 1.1 and 2.0 models. Switching chipset from ADMtek 6996L to Broadcom BCM5325EKQM.
3.0 200 MHz 16 MB 4 MB CDF8 Identical to 1.1 and later models, except for the CPU speed. Undocumented switch behind left front panel intended for use with a feature called "SecureEasySetup"[1] for setting up wireless security. This button is illuminated with a Cisco logo on it, to the left side of the router. The button's functionality can be programmed to run custom Linux shell scripts through various third-party firmware projects.
3.1 216 MHz 16 MB 4 MB CDF9 The Version 3.1 hardware is essentially the same as the Version 3.0 hardware. The SecureEasySetup button has been activated by the original firmware included in this model, even though the switch existed in Version 3.0.

There is new (EU?) firmware version 4.20.8

4.0 200 MHz 16 MB 4 MB CDFA Broadcom BCM5352EKPB Chipset
5.0 200 MHz 8 MB 2 MB CDFB Broadcom BCM5352EKPB Chipset - Switched to VxWorks OS and reduced Flash Memory and RAM; not compatible with most 3rd party firmware. DD-WRT micro generic (released Apr 4, 2006) supports v5. See here for more information. An easier method has since been devised for flashing v5-v6 to DD-WRT. See here.
5.1 200 MHz 8 MB 2 MB CDFC Broadcom BCM5352EKPB Chipset
6.0 200 MHz 8 MB 2 MB CDFD Broadcom BCM5352EKBG Chipset
7.0
8 MB 2 MB CDFE Atheros AR2317 Chipset - It is probable that this version disables the use of third party firmware completely due to new hardware implications.
WRT54GS version CPU speed RAM Flash memory S/N Prefix Notes
1.0 200 MHz 32 MB 8 MB CGN0
CGN1
Added SpeedBooster technology (Broadcom Afterburner technology), boosting the throughput of 802.11g by 30% (needs a wireless card with SpeedBooster technology on the other side to work)
1.1 200 MHz 32 MB 8 MB CGN2 Chipset changed from ADMtek 6996L to Broadcom BCM5325EKQM.
2.0 200 MHz 32 MB 8 MB CGN3 10 LED Front Panel (two new ones behind Cisco logo button). Also capable of SecureEasySetup, but use of the logo button and lighting of the new LEDs behind it requires firmware upgrade. Use Hynix RAM.
2.1 216 MHz 32 MB 8 MB CGN4 Add SecureEasySetup. Radio chip is changed from BCM2050 to BCM2050KML.
3.0 200 MHz 32 MB 8 MB CGN5 Use System-on-Chip: processor, MAC, and switching are handled by Broadcom BCM5352EKBP.
4.0 200 MHz 16 MB 4 MB CGN6 Reduced RAM & Flash
5.0 200 MHz 16 MB 2 MB CGN7 As of Jan 2006 - Switched to VxWorks OS and reduced Flash Memory; not compatible with most 3rd party firmware, except DD-WRT micro edition. See here for more information. An easier method has since been devised for flashing v5-v6 to DD-WRT. See here.
5.1 200 MHz 16 MB 2 MB CGN8 Still using VxWorks OS.
6.0 200 MHz 16 MB 2 MB CGN9 DD-WRT micro edition works on this edition. See version 5.0 notes.
WRT54GL version CPU speed RAM Flash memory S/N Prefix Notes
1.0 200 MHz 16 MB 4 MB CL7A New model line, released after the version 5 WRT54G, which returns to a Linux-based internal OS as opposed to the v5's VxWorks firmware. NOT SpeedBooster enabled in stock state (third party firmwares however, like DD-WRT, will enable the SpeedBooster feature on this model, as it is hardware independent). Essentially the same as the WRT54G version 4.0, but with a new model number.
1.1 200 MHz 16 MB 4 MB CL7B No known major differences; however, in August 2006, this version was shipping with firmware revision 4.30.7, while the latest available firmware for the 1.0 version is 4.30.5. This pre-loaded firmware allows the user to upload a 4MB firmware image, whereas the pre-loaded firmware on version 1.0 limited the image to 3MB--which restricts the ability to load a full version of DD-WRT without first loading a mini version of DD-WRT.
WRTSL54GS version CPU speed RAM Flash memory S/N Prefix Notes
1.0 266 MHz 32 MB 8 MB Tom's hardware seems to have been wrong, it has been seen in the wild with only 8MB and the OpenWRT forum seems to say the same. Perhaps Tom's hardware got one before they had settled on the flash size. CJK0 Released after the WRT54GS and WRT54GL. Uses Linux-based OS. Includes SpeedBooster support, additional firmware features, and an external USB 2.0 port (StorageLink) for network storage. Uses 16MB of Intel TE28F640 flash with a Broadcom BCM4704KPB processor and Broadcom BCM5325FKQM ethernet switch.
WRT300N V1 version CPU speed RAM Flash memory S/N Prefix Notes
1.0 264 MHz 32 MB 4 MB CNP0 802.11n "draft" MIMO router with 100 Mbit/s real-world throughout. Uses Linux-based OS.




ที่มา http://en.wikipedia.org/wiki/WRT54G