<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com &#187; PHP</title>
	<atom:link href="http://spalinux.com/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Mon, 26 Jul 2010 09:51:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>คอนฟิก SNMP บน Solaris 10</title>
		<link>http://spalinux.com/2010/07/configure_snmp_on_solaris_10</link>
		<comments>http://spalinux.com/2010/07/configure_snmp_on_solaris_10#comments</comments>
		<pubDate>Sat, 17 Jul 2010 07:36:11 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SNMP]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[solaris 10]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1132</guid>
		<description><![CDATA[SNMP เป็นเครื่องมือหนึ่งที่สามารถใช้ดูการทำงานของเครื่อง เก็บประวัติการใช้ resource ต่างๆ ของเครื่อง ไม่ว่าจะเป็น CPU, Memory, Disk, Network แล้วสามารถนำมาใช้สร้างเป็นกราฟ รายงาน เพื่อวางแผนการเพิ่ม hardware เมื่อจำเป็นได้ ในบทความนี้จะอธิบายวิธีการคอนฟิกและรัน SNMP Server บน Solaris 10 เพื่อให้สามารถใช้โปรแกรม SNMP เช่น MRTG, Cacti, NMS  มาเก็บค่าต่างๆ ได้ ระบบทดสอบ บทความนี้ทดสอบบน Solaris 10 (x86) 10/09 # cat /etc/release                        Solaris 10 10/09 s10x_u8wos_08a X86            Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.                         [...]]]></description>
			<content:encoded><![CDATA[<p>SNMP เป็นเครื่องมือหนึ่งที่สามารถใช้ดูการทำงานของเครื่อง เก็บประวัติการใช้ resource ต่างๆ ของเครื่อง ไม่ว่าจะเป็น CPU, Memory, Disk, Network แล้วสามารถนำมาใช้สร้างเป็นกราฟ รายงาน เพื่อวางแผนการเพิ่ม hardware เมื่อจำเป็นได้</p>
<p>ในบทความนี้จะอธิบายวิธีการคอนฟิกและรัน SNMP Server บน Solaris 10 เพื่อให้สามารถใช้โปรแกรม SNMP เช่น MRTG, Cacti, NMS  มาเก็บค่าต่างๆ ได้</p>
<p><span id="more-1132"></span></p>
<h4>ระบบทดสอบ</h4>
<p>บทความนี้ทดสอบบน Solaris 10 (x86) 10/09</p>
<pre># <strong>cat /etc/release
</strong>                       Solaris 10 10/09 s10x_u8wos_08a X86
           Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                           Assembled 16 September 2009</pre>
<h4>รันเซอร์วิส sma</h4>
<p>โปรแกรมชุด SNMP หรือ System Management Agent ใน Solaris 10 ได้มาจาก Net-SNMP ซึ่งเป็น freeware โดยจะถูกติดตั้งใน path ที่ชื่อ /usr/sfw/ ดังนี้น เวลารันคำสั่ง อาจต้องมีการระบุ PATH เพิ่มเติม</p>
<p>System Management Agent บน Solaris 10 ถูกควบคุมด้วยเซอร์วิสที่ชื่อ sma</p>
<p>ใช้คำสั่ง svcs เพื่อตรวจสอบว่ารันเซอร์วิส sma อยู่หรือไม่</p>
<pre># <strong>svcs -a | grep sma
</strong>disabled       13:50:30 svc:/application/management/sma:default</pre>
<p>หมายเหตุ ต้องระบุออปชั่น &#8216;-a&#8217; เพื่อดูชื่อเซอร์วิสทั้งหมด ทั้งที่ enable และ disable ไว้</p>
<p>ไฟล์คอนฟิกของ SNMP Server คือ /etc/sma/snmp/snmpd.conf</p>
<pre># <strong>cat /etc/sma/snmp/snmpd.conf
</strong>...
###########################################################################
#
# SECTION: Access Control Setup
#
#   This section defines who is allowed to talk to your running
#   snmp agent.</pre>
<pre># rocommunity: a SNMPv1/SNMPv2c read-only access community name
#   arguments:  community [default|hostname|network/bits] [oid]</pre>
<pre>rocommunity  public
...</pre>
<p>ดีฟอลต์ SNMP Community String แบบ read-only คือ &#8220;public&#8221; แนะนำให้เปลี่ยน เช่นเปลี่ยนเป็น &#8220;test_public_read&#8221;</p>
<pre># <strong>cat /etc/sma/snmp/snmpd.conf
</strong>...
rocommunity  <strong>test_public_read
</strong>...</pre>
<p>ใช้คำสั่ง svcadm เพื่อรันเซอร์วิส sma</p>
<pre># <strong>svcadm enable svc:/application/management/sma:default</strong></pre>
<pre># <strong>svcs -a  | grep sma
</strong>online         14:18:37 svc:/application/management/sma:default</pre>
<p>ใช้คำสั่ง ps เพื่อตรวจสอบ process ของ snmpd (SNMP Server)</p>
<pre># <strong>ps -ef | grep snmp
</strong>    root  1008     1   0 14:18:38 ?           0:00 /usr/sfw/sbin/snmpd</pre>
<p>ทดลองใช้คำสั่ง snmpwalk เพื่อ walk ค่าต่างๆ ผ่านทาง SNMP</p>
<pre># <strong>/usr/sfw/bin/snmpwalk -v 1 -c test_public_read 127.0.0.1 system
</strong>SNMPv2-MIB::sysDescr.0 = STRING: SunOS sol10u8-zfs64a 5.10 Generic_141445-09 i86pc
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.3
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (12062) 0:02:00.62
SNMPv2-MIB::sysContact.0 = STRING: "System administrator"
SNMPv2-MIB::sysName.0 = STRING: sol10u8-zfs64a
SNMPv2-MIB::sysLocation.0 = STRING: "System administrators office"
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (64) 0:00:00.64
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
...</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://docs.sun.com/app/docs/doc/817-3000/introduction-1?l=en&amp;a=view" target="_blank">Solaris System Management Agent Administration Guide</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/07/configure_snmp_on_solaris_10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การแสดงผล Error ของ PHP</title>
		<link>http://spalinux.com/2010/02/configure_display_php_errors</link>
		<comments>http://spalinux.com/2010/02/configure_display_php_errors#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:21:45 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[php error]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1077</guid>
		<description><![CDATA[การตรวจสอบข้อผิดพลาด (error) เวลาพัฒนาโปรแกรม หรือเมื่อรันโปรแกรม ถือว่ามีความสำคัญอย่างหนึ่ง เพื่อที่จะทำให้ระบบทำงานได้อย่างถูกต้อง สำหรับการพัฒนา Web Application ด้วย PHP การตรวจสอบหรือแสดงผลข้อผิดพลาด สามารถทำได้ สองวิธีหลักๆ คือ แสดงข้อผิดพลาด (error) ผ่านหน้าเว็บ เก็บข้อผิดพลาดไว้ในไฟล์ (log file) เพื่อการตรวจสอบ วิธีแรก การแสดงผลข้อผิดพลาด ผ่านหน้าเว็บเมื่อรันโปรแกรมเลย ถือว่ามีความสะดวกสบายมาก คือเมื่อโปรแกรมเมอร์พัฒนาโปรแกรมไป รันผ่านหน้าเว็บ ก็สามารถเห็นข้อผิดพลาดที่เกิดขึ้นได้เลย ว่าเกิดปัญหาที่ไหน ไฟล์อะไร บรรทัดเท่าไร แต่จะมีข้อเสียอย่างมาก หากปล่อยให้มีการแสดงผลข้อผิดพลาดนี้ แก่ผู้ใช้งานทั่วไป เพราะอาจแสดงรายละเอียดโปรแกรมมากเกินไป ซึ่งอาจทำให้เปิดเผยช่องโหว่ของโปรแกรมได้ คำแนะนำคือ ในขณะที่กำลังพัฒนาโปรแกรม (development) หรือบนเครื่องเซิร์ฟเวอร์สำหรับทดสอบโปรแกรม เราอาจเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บเลย เพื่อสะดวกต่อโปรแกรมเมอร์ ในการตรวจสอบ แต่เมื่อไรก็ตาม ระบบเริ่มใช้งานจริง (production) แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ ให้เก็บข้อผิดพลาดไว้ในแบบที่ 2 คือเก็บไว้ในไฟล์ (log file) แล้วดูข้อผิดพลาดจากในไฟล์ ตัวอย่างข้อผิดพลาดในการเขียน [...]]]></description>
			<content:encoded><![CDATA[<p>การตรวจสอบข้อผิดพลาด (error) เวลาพัฒนาโปรแกรม หรือเมื่อรันโปรแกรม ถือว่ามีความสำคัญอย่างหนึ่ง เพื่อที่จะทำให้ระบบทำงานได้อย่างถูกต้อง</p>
<p>สำหรับการพัฒนา Web Application ด้วย PHP การตรวจสอบหรือแสดงผลข้อผิดพลาด สามารถทำได้ สองวิธีหลักๆ คือ</p>
<ol>
<li>แสดงข้อผิดพลาด (error) ผ่านหน้าเว็บ</li>
<li>เก็บข้อผิดพลาดไว้ในไฟล์ (log file) เพื่อการตรวจสอบ</li>
</ol>
<p><span id="more-1077"></span></p>
<p>วิธีแรก การแสดงผลข้อผิดพลาด ผ่านหน้าเว็บเมื่อรันโปรแกรมเลย ถือว่ามีความสะดวกสบายมาก คือเมื่อโปรแกรมเมอร์พัฒนาโปรแกรมไป รันผ่านหน้าเว็บ ก็สามารถเห็นข้อผิดพลาดที่เกิดขึ้นได้เลย ว่าเกิดปัญหาที่ไหน ไฟล์อะไร บรรทัดเท่าไร</p>
<p>แต่จะมีข้อเสียอย่างมาก หากปล่อยให้มีการแสดงผลข้อผิดพลาดนี้ แก่ผู้ใช้งานทั่วไป เพราะอาจแสดงรายละเอียดโปรแกรมมากเกินไป ซึ่งอาจทำให้เปิดเผยช่องโหว่ของโปรแกรมได้</p>
<p>คำแนะนำคือ ในขณะที่กำลังพัฒนาโปรแกรม (development) หรือบนเครื่องเซิร์ฟเวอร์สำหรับทดสอบโปรแกรม เราอาจเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บเลย เพื่อสะดวกต่อโปรแกรมเมอร์ ในการตรวจสอบ</p>
<p>แต่เมื่อไรก็ตาม ระบบเริ่มใช้งานจริง (production) แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ ให้เก็บข้อผิดพลาดไว้ในแบบที่ 2 คือเก็บไว้ในไฟล์ (log file) แล้วดูข้อผิดพลาดจากในไฟล์</p>
<p>ตัวอย่างข้อผิดพลาดในการเขียน PHP เช่น พิมพ์เครื่องหมาย : แทนที่เป็น ;</p>
<pre>$ <strong>cat /var/www/html/test.php
</strong>&lt;?php</pre>
<pre>print 'hello'<span style="color: #ff0000;"><strong>:</strong></span></pre>
<pre>?&gt;</pre>
<h4>แสดงข้อผิดพลาดผ่านหน้าเว็บ (display_errors)</h4>
<p>PHP เวอร์ชั่นหลังๆ จะปิดการแสดงข้อผิดพลาดผ่านหน้าเว็บ หากต้องการเปิดคุณสมบัตินี้ทำได้สองวิธีคือ</p>
<p>1. แก้ไฟล์ /etc/php.ini จะมีผลทั้งเซิร์ฟเวอร์</p>
<p>ออปชั่นที่ต้องแก้ไขคือ &#8220;display_errors&#8221;</p>
<ul>
<li>&#8220;On&#8221; หากต้องการเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ เหมาะสำหรับการพัฒนาโปรแกรม (development)</li>
<li>&#8220;Off&#8221; หากไม่ต้องการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ สำหรับระบบที่ใช้งานจริงแล้ว (production)</li>
</ul>
<p>ตัวอย่างการคอนฟิกในไฟล์ /etc/php.ini</p>
<pre>...
display_errors = On
...</pre>
<p>หลังจากแก้ไขไฟล์ ต้องรีโหลด Web Server เพื่อให้คอนฟิกใหม่มีผล</p>
<pre># <strong>service httpd reload
</strong>Reloading httpd:                                           [  OK  ]</pre>
<p>ตัวอย่างการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ</p>
<p><a href="http://spalinux.com/wp-content/uploads/2010/02/02-display_errors_with_html_errors.png"><img title="display_errors = On" src="http://spalinux.com/wp-content/uploads/2010/02/02-display_errors_with_html_errors.png" alt="" width="595" height="272" /></a></p>
<p>2. หากไม่สามารถแก้ไขไฟล์ /etc/php.ini ได้ สามารถใช้ฟังก์ชั่น &#8220;ini_set&#8221; เพื่อเปิดคุณสมบัตินี้ได้</p>
<p>ตัวอย่างการใช้ฟังก์ชั่น &#8220;ini_set&#8221; เพื่อตั้งค่าคอนฟิก &#8220;display_errors&#8221;</p>
<pre>&lt;?php

ini_set('display_errors', TRUE);
...
?&gt;</pre>
<h4>เก็บข้อผิดพลาดไว้ในไฟล์ (error_log)</h4>
<p>เมื่อระบบใช้งานจริง (production) แล้ว แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ แต่ให้เก็บไว้ในไฟล์ ไว้ดูย้อนหลังได้</p>
<p>ตัวอย่างคอนฟิกให้เก็บข้อผิดพลาดของการรัน PHP ไว้ในไฟล์ /var/log/httpd/php_errors.log</p>
<pre>...
html_errors = Off
log_errors = On
error_log = /var/log/httpd/php_errors.log
...</pre>
<p>ต้องสร้างไฟล์สำหรับเก็บ และตั้งค่าเจ้าของไฟล์ (owner) เพื่อให้โปรเซสเว็บเซิร์ฟเวอร์ เช่น apache เขียนไฟล์ได้</p>
<pre># <strong>touch /var/log/httpd/php_errors.log
</strong># <strong>chown apache /var/log/httpd/php_errors.log</strong></pre>
<p>หลังจากแก้ไขไฟล์ ต้องรีโหลด Web Server เพื่อให้คอนฟิกใหม่มีผล</p>
<pre># <strong>service httpd reload
</strong>Reloading httpd:                                           [  OK  ]</pre>
<p>ตัวอย่างข้อผิดพลาดที่ถูกเก็บไว้ในไฟล์</p>
<pre># <strong>tail -f /var/log/httpd/php_errors.log
</strong>[12-Feb-2010 12:49:25] PHP Parse error:  syntax error, unexpected ':' in /var/www/html/test.php on line 3</pre>
<p>หรือถ้าต้องการเก็บไว้ใน syslog ก็แก้คอนฟิก &#8220;error_log&#8221; ให้เป็น syslog ได้</p>
<pre>...
html_errors = Off
log_errors = On
error_log = syslog
...</pre>
<p>ตัวอย่างการแสดงผลในไฟล์ /var/log/messages</p>
<pre># <strong>tail -f /var/log/messages
</strong>Feb 12 15:05:08 web httpd: PHP Parse error:  syntax error, unexpected ':' in /var/www/html/test.php on line 3</pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/02/configure_display_php_errors/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เขียนโปรแกรมเรียง ip address</title>
		<link>http://spalinux.com/2009/09/how_to_sort_ip_address</link>
		<comments>http://spalinux.com/2009/09/how_to_sort_ip_address#comments</comments>
		<pubDate>Sun, 13 Sep 2009 14:06:28 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[sort ip address]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=912</guid>
		<description><![CDATA[ช่วงนี้รับงานเขียนโปรแกรมเพื่อเก็บข้อมูลอุปกรณ์เน็ตเวิร์ค เพื่อตรวจสอบสถานะการใช้งาน และเก็บสถิติไว้ ข้อมูลอย่างหนึ่งที่เก็บคือ IP Address ของเครื่อง ปัญหาที่เจอคือเวลาสร้างรายชื่ออุปกรณ์ แล้วต้องการเรียง IP Address จากมากไปน้อย ผลลัพธ์ที่แสดงออกมาจะไม่ถูกต้องตามที่ต้องการ ตัวอย่างโครงสร้าง table ที่เก็บข้อมูล mysql&#62; DESCRIBE devices; +-----------+------------------+------+-----+---------+----------------+ &#124; Field     &#124; Type             &#124; Null &#124; Key &#124; Default &#124; Extra          &#124; +-----------+------------------+------+-----+---------+----------------+ &#124; device_id &#124; int(10) unsigned &#124; NO   &#124; PRI &#124; NULL    &#124; auto_increment &#124; &#124; device_ip &#124; varchar(15)      &#124; YES  &#124;     [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้รับงานเขียนโปรแกรมเพื่อเก็บข้อมูลอุปกรณ์เน็ตเวิร์ค เพื่อตรวจสอบสถานะการใช้งาน และเก็บสถิติไว้ ข้อมูลอย่างหนึ่งที่เก็บคือ IP Address ของเครื่อง</p>
<p>ปัญหาที่เจอคือเวลาสร้างรายชื่ออุปกรณ์ แล้วต้องการเรียง IP Address จากมากไปน้อย ผลลัพธ์ที่แสดงออกมาจะไม่ถูกต้องตามที่ต้องการ</p>
<p><span id="more-912"></span></p>
<p>ตัวอย่างโครงสร้าง table ที่เก็บข้อมูล</p>
<pre>mysql&gt; <strong>DESCRIBE devices;
</strong>+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| device_id | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| device_ip | varchar(15)      | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)</pre>
<p>ตัวอย่างข้อมูลที่เก็บ</p>
<pre>mysql&gt; <strong>SELECT * FROM devices;
</strong>+-----------+-----------------+
| device_id | device_ip       |
+-----------+-----------------+
|         1 | 192.168.3.9     |
|         2 | 192.168.10.20   |
|         3 | 192.168.1.1     |
|         4 | 192.168.200.254 |
|         5 | 192.168.5.132   |
+-----------+-----------------+
5 rows in set (0.00 sec)</pre>
<p>ตัวอย่างผลลัพธ์จากการเรียง IP Address โดยใช้ ORDER BY</p>
<pre>mysql&gt; <strong>SELECT * FROM devices ORDER BY device_ip;
</strong>+-----------+-----------------+
| device_id | device_ip       |
+-----------+-----------------+
|         3 | 192.168.1.1     |
|         2 | 192.168.10.20   |
|         4 | 192.168.200.254 |
|         1 | 192.168.3.9     |
|         5 | 192.168.5.132   |
+-----------+-----------------+
5 rows in set (0.00 sec)</pre>
<p>ผลลัพธ์ที่ได้ เนื่องจากฟิลด์ device_ip ถูกกำหนดเป็น VARCHAR ทำให้การใช้ ORDER BY จะเป็นเรียงตามตัวอักษร คือเรียง 1, 2, 3</p>
<p>เพื่อให้การผลลัพธ์การเรียงถูกต้อง จำเป็นต้องแปลง IP Address จาก VARCHAR ให้เป็น ค่าตัวเลข โดยใช้ฟังก์ชั่น INET_ATON ใน MySQL</p>
<p>ดูวิธีการใช้ฟังก์ชั่น INET_ATON ใน MySQL</p>
<pre>mysql&gt; <strong>HELP INET_ATON;
</strong>Name: 'INET_ATON'
Description:
Syntax:
INET_ATON(expr)</pre>
<pre>Given the dotted-quad representation of a network address as a string,
returns an integer that represents the numeric value of the address.
Addresses may be 4- or 8-byte addresses.</pre>
<pre>URL: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html</pre>
<pre>Examples:
mysql&gt; SELECT INET_ATON('209.207.224.40');
        -&gt; 3520061480</pre>
<p>การเรียง IP Address โดยใช้ฟังก์ชั่น INET_ATON แปลงค่า</p>
<pre>mysql&gt; <strong>SELECT * FROM devices ORDER BY INET_ATON(device_ip);
</strong>+-----------+-----------------+
| device_id | device_ip       |
+-----------+-----------------+
|         3 | 192.168.1.1     |
|         1 | 192.168.3.9     |
|         5 | 192.168.5.132   |
|         2 | 192.168.10.20   |
|         4 | 192.168.200.254 |
+-----------+-----------------+
5 rows in set (0.01 sec)</pre>
<p>ผลลัพธ์ที่ได้จะเรียงได้อย่างถูกต้อง</p>
<h4>ฟังก์ชั่น MySQL ที่เกี่ยวข้อง</h4>
<p>ฟังก์ชั่น INET_ATON แปลงจาก IP Address เป็นตัวเลข</p>
<pre>mysql&gt; <strong>SELECT INET_ATON('192.168.1.1');
</strong>+--------------------------+
| INET_ATON('192.168.1.1') |
+--------------------------+
|               3232235777 |
+--------------------------+
1 row in set (0.00 sec)</pre>
<p>ฟังก์ชั่น INET_NTOA แปลงจากตัวเลขเป็น IP Address</p>
<pre>mysql&gt; <strong>SELECT INET_NTOA('3232235777');
</strong>+-------------------------+
| INET_NTOA('3232235777') |
+-------------------------+
| 192.168.1.1             |
+-------------------------+
1 row in set (0.00 sec)</pre>
<h4>ฟังก์ชั่น PHP ที่เกี่ยวข้อง</h4>
<p>ฟังก์ชั่น ip2long แปลงจาก IP Address เป็นตัวเลข</p>
<pre><strong>print ip2long('192.168.1.1');</strong></pre>
<pre>// return
3232235777</pre>
<p>ฟังก์ชั่น long2ip แปลงจากตัวเลขเป็น IP Address</p>
<pre><strong>print long2ip('3232235777');</strong></pre>
<pre>// return
192.168.1.1</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html" target="_blank">MySQL 5.1 Reference Manual :: Miscellaneous Functions</a></li>
<li><a href="http://www.php.net/ip2long" target="_blank">PHP: ip2long &#8211; Manual</a></li>
<li><a href="http://www.php.net/long2ip" target="_blank">PHP: long2ip &#8211; Manual</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/09/how_to_sort_ip_address/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>โหลดข้อมูลเข้า MySQL ด้วย LOAD DATA INFILE</title>
		<link>http://spalinux.com/2009/08/mysql_load_data_infile</link>
		<comments>http://spalinux.com/2009/08/mysql_load_data_infile#comments</comments>
		<pubDate>Sat, 15 Aug 2009 08:08:21 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[mysql load data]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=901</guid>
		<description><![CDATA[บ่อยครั้งที่เราได้ข้อมูลเป็นไฟล์ธรรมดาแบบ text แล้วเราต้องการนำข้อมูลนี้ใส่เข้าไปในฐานข้อมูลเช่น MySQL มีหลายวิธีในการเขียนโปรแกรม เพื่อจะโหลดข้อมูลเข้า MySQL ได้ ในบทความนี้ขอแนะนำวิธีการใช้คำสั่ง LOAD DATA INFILE ซึ่งเป็นคำสั่งใน MySQL เพื่อทำหน้าที่นี้โดยเฉพาะ และมีประสิทธิภาพ ความเร็วในการโหลดข้อมูลลงฐานข้อมูลสูงมาก ในที่นี้จะเปรียบเทียบความเร็วการเขียนโปรแกรมแบบเปิดไฟล์แล้ววนลูปทีละบรรทัดเพื่อโหลดข้อมูล กับการใช้คำสั่ง LOAD DATA INFILE ทีเดียวเลย ตัวอย่างข้อมูลที่ทดสอบ ในการทดสอบ เราจะสร้าง table ขึ้นมาแบบง่ายๆ มี 3 column ดังนี้ CREATE TABLE test_load (  id     INTEGER UNSIGNED AUTO_INCREMENT,  dat1   INTEGER UNSIGNED,  dat2   INTEGER UNSIGNED,  PRIMARY KEY(id) ); ส่วนไฟล์ข้อมูลที่เราจะโหลดทั้งหมด 10,000 บรรทัด มีสองฟิลด์คั่นด้วยเครื่องหมาย comma &#8220;,&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>บ่อยครั้งที่เราได้ข้อมูลเป็นไฟล์ธรรมดาแบบ text แล้วเราต้องการนำข้อมูลนี้ใส่เข้าไปในฐานข้อมูลเช่น MySQL มีหลายวิธีในการเขียนโปรแกรม เพื่อจะโหลดข้อมูลเข้า MySQL ได้</p>
<p>ในบทความนี้ขอแนะนำวิธีการใช้คำสั่ง LOAD DATA INFILE ซึ่งเป็นคำสั่งใน MySQL เพื่อทำหน้าที่นี้โดยเฉพาะ และมีประสิทธิภาพ ความเร็วในการโหลดข้อมูลลงฐานข้อมูลสูงมาก</p>
<p>ในที่นี้จะเปรียบเทียบความเร็วการเขียนโปรแกรมแบบเปิดไฟล์แล้ววนลูปทีละบรรทัดเพื่อโหลดข้อมูล กับการใช้คำสั่ง LOAD DATA INFILE ทีเดียวเลย</p>
<p><span id="more-901"></span></p>
<h4>ตัวอย่างข้อมูลที่ทดสอบ</h4>
<p>ในการทดสอบ เราจะสร้าง table ขึ้นมาแบบง่ายๆ มี 3 column ดังนี้</p>
<pre>CREATE TABLE test_load (
 id     INTEGER UNSIGNED AUTO_INCREMENT,
 dat1   INTEGER UNSIGNED,
 dat2   INTEGER UNSIGNED,
 PRIMARY KEY(id)
);</pre>
<p>ส่วนไฟล์ข้อมูลที่เราจะโหลดทั้งหมด 10,000 บรรทัด มีสองฟิลด์คั่นด้วยเครื่องหมาย comma &#8220;,&#8221; ตัวอย่างไฟล์เป็นดังนี้</p>
<pre>[user@db-server ~]$ <strong>cat data.txt
</strong>2436,156
1732,9161
3016,49
1833,963
5430,434
2092,3929
5430,444
4123,120
...</pre>
<h4>เปิดไฟล์ วนลูป แล้ว INSERT ข้อมูล</h4>
<p>ตัวอย่างโปรแกรม PHP ที่เปิดไฟล์  วนลูปทีละบรรทัด แล้ว INSERT ข้อมูลลง MySQL</p>
<pre>&lt;?php</pre>
<pre>// connect database
mysql_connect("localhost", "db_user", "db_pass");
mysql_select_db("test");</pre>
<pre>$fname  = $argv[1];</pre>
<pre>// open file
$fh = fopen($fname, "r");</pre>
<pre>while ( $fline = fgetcsv($fh, "4096", ",") ) {
    $_dat1 = $fline[0];
    $_dat2 = $fline[1];</pre>
<pre>    // loop insert data
    $db_sql = "INSERT INTO test_load ( dat1, dat2 )  VALUES ( '$_dat1', '$_dat2' );";
    $db_res = mysql_query($db_sql) or die($db_sql);</pre>
<pre>}</pre>
<pre>fclose($fh);
?&gt;</pre>
<p>รันโปรแกรม และใช้คำสั่ง time เพื่อจับเวลาที่ใช้ในการรัน</p>
<pre>[user@db-server ~]$ <strong>time php insert-data.php data.txt</strong></pre>
<pre><span style="color: #0000ff;"><strong>real    0m0.898s
</strong></span>user    0m0.100s
sys     0m0.564s</pre>
<h4>ใช้คำสั่ง LOAD DATA INFILE</h4>
<p>รูปแบบการใช้คำสั่ง LOAD DATA INFILE มีดังนี้</p>
<pre><strong>LOAD DATA</strong> [LOW_PRIORITY | CONCURRENT] [<strong>LOCAL</strong>] <strong>INFILE 'file_name'
</strong>    [REPLACE | IGNORE]
<strong>    INTO TABLE tbl_name
</strong>    [CHARACTER SET charset_name]
    [{<strong>FIELDS</strong> | COLUMNS}
        [<strong>TERMINATED BY 'string'</strong>]
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [<strong>(col_name_or_user_var,...)</strong>]
    [SET col_name = expr,...]</pre>
<p>คำอธิบายการใช้คำสั่งโดยย่อ</p>
<ul>
<li>INFILE &#8216;file_name&#8217; ระบุว่าโหลดจากไฟล์ไหน </li>
<li>INTO TABLE tbl_name  ระบุชื่อ table ที่จะโหลดข้อมูลลง</li>
<li>FIELDS TERMINATED BY &#8216;string&#8217;  แต่ละฟิลด์คั่นด้วยเครื่องหมายอะไร</li>
<li>(col_name_or_user_var,&#8230;) ในกรณีที่โหลดไม่ครบทุกฟิลด์ตามโครงสร้างของ table ต้องมีการระบุด้วยว่าโหลดใส่ชื่อฟิลด์อะไรบ้างตามลำดับ</li>
</ul>
<p>ตัวอย่างการเขียนโปรแกรม เพื่อโหลดข้อมูลจากไฟล์ ลง table ชื่อ test_load แต่ละฟิลด์คั่นด้วยเครื่องหมาย &#8220;,&#8221; และโหลดเฉพาะฟิลด์ที่ชื่อ dat1, dat2 ตามลำดับ</p>
<pre>&lt;?php</pre>
<pre>// connect database
mysql_connect("localhost", "db_user", "db_pass");
mysql_select_db("test");</pre>
<pre>$fname  = $argv[1];</pre>
<pre>// load data
$db_sql = "LOAD DATA LOCAL INFILE '$fname' INTO TABLE test_load
             FIELDS TERMINATED BY ',' ( dat1, dat2 );";
$db_res = mysql_query($db_sql) or die($db_sql);</pre>
<pre>?&gt;</pre>
<p>รันโปรแกรมเพื่อโหลดข้อมูลลง MySQL ใช้คำสั่ง time เพื่อจับเวลาที่ใช้ในการรันโปรแกรม</p>
<pre>[user@db-server ~]$ <strong>time php load-data.php data.txt</strong></pre>
<pre><strong><span style="color: #0000ff;">real    0m0.117s
</span></strong>user    0m0.054s
sys     0m0.023s</pre>
<p>สังเกตว่าเวลาที่ใช้ในการรันเพื่อโหลดข้อมูลด้วย LOAD DATA INFILE เร็วกว่าการ เปิดไฟล์และวนลูปมาก</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html" target="_blank">MySQL 5.1 Reference Manual :: 12.2.6 LOAD DATA INFILE Syntax</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/08/mysql_load_data_infile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Cacti บน Fedora 11 ตอนที่ 3</title>
		<link>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_3</link>
		<comments>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_3#comments</comments>
		<pubDate>Sat, 18 Jul 2009 09:52:26 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SNMP]]></category>
		<category><![CDATA[install cacti]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=874</guid>
		<description><![CDATA[ขั้นตอนนี้จะเป็นการคอนฟิก Cacti ผ่านหน้าเว็บ ซึ่งเป็นค่าคอนฟิกต่างๆ ที่ใช้รัน   เลือกชนิดการติดตั้ง ถ้าเป็นการติดตั้งใหม่ เลือกเป็น &#8220;New Install&#8221;   หน้าเว็บจะแสดงโปรแกรมต่างๆ ที่ Cacti เรียกใช้ หากมีครบทุกอย่างก็สามารถกดปุ่ม [Finish] ได้      การล็อกอินครั้งแรก ใส่ User Name เป็น &#8220;admin&#8221; โดยไม่ต้องใส่ Password    เพื่อความปลอดภัย ในการล็อกอินครั้งแรก โปรแกรม Cacti จะบังคับให้เปลียน Password   หลังจากล็อกอินเรียบร้อยแล้ว ก็จะขึ้นหน้าเว็บของ Cacti   เปิดการ polling การติดตั้ง cacti โดยใช้ไฟล์ rpm จะติดตั้ง cron สำหรับการ poll data ทุกๆ 5 นาที ไว้ในไฟล์ /etc/cron.d/cacti เพียงแต่โดยดีฟอลต์จะปิดไว้ [...]]]></description>
			<content:encoded><![CDATA[<p>ขั้นตอนนี้จะเป็นการคอนฟิก Cacti ผ่านหน้าเว็บ ซึ่งเป็นค่าคอนฟิกต่างๆ ที่ใช้รัน</p>
<p><span id="more-874"></span></p>
<p><img title="Cacti Web Install - Step 1" src="http://spalinux.com/wp-content/uploads/2009/07/01_cacti_install_step-1.png" alt="Cacti Web Install - Step 1" width="816" height="571" /></p>
<p> </p>
<p>เลือกชนิดการติดตั้ง ถ้าเป็นการติดตั้งใหม่ เลือกเป็น &#8220;New Install&#8221;</p>
<p><img title="Cacti Web Install - Step 2" src="http://spalinux.com/wp-content/uploads/2009/07/02_cacti_install_step-2.png" alt="Cacti Web Install - Step 2" width="816" height="571" /></p>
<p> </p>
<p>หน้าเว็บจะแสดงโปรแกรมต่างๆ ที่ Cacti เรียกใช้ หากมีครบทุกอย่างก็สามารถกดปุ่ม [Finish] ได้ </p>
<p><img class="alignnone size-full wp-image-878" title="Cacti Web Install - Step 3" src="http://spalinux.com/wp-content/uploads/2009/07/03_cacti_install_step-3.png" alt="Cacti Web Install - Step 3" width="816" height="571" /></p>
<p> </p>
<p>  การล็อกอินครั้งแรก ใส่ User Name เป็น &#8220;admin&#8221; โดยไม่ต้องใส่ Password </p>
<p><img title="Cacti - User Login" src="http://spalinux.com/wp-content/uploads/2009/07/04_cacti_user_login.png" alt="Cacti - User Login" width="816" height="571" /></p>
<p> </p>
<p>เพื่อความปลอดภัย ในการล็อกอินครั้งแรก โปรแกรม Cacti จะบังคับให้เปลียน Password</p>
<p><img title="Cacti Forced Password Change" src="http://spalinux.com/wp-content/uploads/2009/07/05_cacti_forced_password_change.png" alt="Cacti Forced Password Change" width="816" height="571" /></p>
<p> </p>
<p>หลังจากล็อกอินเรียบร้อยแล้ว ก็จะขึ้นหน้าเว็บของ Cacti</p>
<p><img title="Cacti Web Console" src="http://spalinux.com/wp-content/uploads/2009/07/06_cacti_web_console.png" alt="Cacti Web Console" width="816" height="571" /></p>
<p> </p>
<h4>เปิดการ polling</h4>
<p>การติดตั้ง cacti โดยใช้ไฟล์ rpm จะติดตั้ง cron สำหรับการ poll data ทุกๆ 5 นาที ไว้ในไฟล์ /etc/cron.d/cacti เพียงแต่โดยดีฟอลต์จะปิดไว้ โดยใส่เครื่องหมาย &#8216;#&#8217; ไว้หน้าบรรทัด</p>
<pre>[root@fc11-64min ~]# <strong>cat /etc/cron.d/cacti
</strong><span style="color: #0000ff;">#</span>*/5 * * * *    cacti   /usr/bin/php /usr/share/cacti/poller.php &gt; /dev/null 2&gt;&amp;1</pre>
<p>ต้องแก้ไขไฟล์นี้โดยเอาเครื่องหมาย &#8216;#&#8217; ออก</p>
<pre>[root@fc11-64min ~]# <strong>cat /etc/cron.d/cacti
</strong>*/5 * * * *    cacti   /usr/bin/php /usr/share/cacti/poller.php &gt; /dev/null 2&gt;&amp;1 </pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_1">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 1</a></li>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_2">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 2</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Cacti บน Fedora 11 ตอนที่ 2</title>
		<link>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_2</link>
		<comments>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_2#comments</comments>
		<pubDate>Sat, 18 Jul 2009 09:30:56 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[install cacti]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=863</guid>
		<description><![CDATA[หลังจากติดตั้งไฟล์โปรแกรม cacti เรียบร้อยแล้ว ต้องแก้ไขคอนฟิกไฟล์รวมทั้งสร้าง database เพื่อใช้ในการเก็บข้อมูลของ cacti เองด้วย คอนฟิกเว็บเซิร์ฟเวอร์ในส่วนของ cacti ส่วนแรกคือคอนฟิกของเว็บเซิร์ฟเวอร์ โดยดีฟอลต์จากการติดตั้ง cacti โดยใช้ไฟล์ rpm ของ Fedora 11 จะมีคอนฟิกเว็บในส่วนของ cacti สร้างเป็นไฟล์ชื่อ /etc/httpd/conf.d/cacti.conf [root@fc11-64min ~]# cat /etc/httpd/conf.d/cacti.conf # # Cacti: An rrd based graphing tool # Alias /cacti    /usr/share/cacti &#60;Directory /usr/share/cacti/&#62;         Order Deny,Allow         Deny from all         Allow from 127.0.0.1 &#60;/Directory&#62; ความหมายของคอนฟิกไฟล์ด้านบนคือ ผู้ใช้สามารถเรียกใช้เว็บโปรแกรม cati [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากติดตั้งไฟล์โปรแกรม cacti เรียบร้อยแล้ว ต้องแก้ไขคอนฟิกไฟล์รวมทั้งสร้าง database เพื่อใช้ในการเก็บข้อมูลของ cacti เองด้วย</p>
<p><span id="more-863"></span></p>
<h4>คอนฟิกเว็บเซิร์ฟเวอร์ในส่วนของ cacti</h4>
<p>ส่วนแรกคือคอนฟิกของเว็บเซิร์ฟเวอร์ โดยดีฟอลต์จากการติดตั้ง cacti โดยใช้ไฟล์ rpm ของ Fedora 11 จะมีคอนฟิกเว็บในส่วนของ cacti สร้างเป็นไฟล์ชื่อ /etc/httpd/conf.d/cacti.conf</p>
<pre>[root@fc11-64min ~]# <strong>cat /etc/httpd/conf.d/cacti.conf
</strong>#
# Cacti: An rrd based graphing tool
#
Alias /cacti    /usr/share/cacti</pre>
<pre>&lt;Directory /usr/share/cacti/&gt;
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
&lt;/Directory&gt;</pre>
<p>ความหมายของคอนฟิกไฟล์ด้านบนคือ ผู้ใช้สามารถเรียกใช้เว็บโปรแกรม cati โดยใส่ path เป็น /cacti เช่น http://&lt;ip-address&gt;/cacti/ แต่ดีฟอลต์จะอนุญาตให้เรียกมาจากเครื่อง ip 127.0.0.1 หรือตัวมันเองเท่านั้น</p>
<p>ถ้าต้องการแก้ไขให้เรียกเว็บ cacti จากเครื่องอื่นได้ ต้องแก้ไขคอนฟิกไฟล์นี้เป็น</p>
<pre>[root@fc11-64min ~]# <strong>cat /etc/httpd/conf.d/cacti.conf
</strong>#
# Cacti: An rrd based graphing tool
#
Alias /cacti    /usr/share/cacti</pre>
<pre>&lt;Directory /usr/share/cacti/&gt;
<span style="color: #0000ff;">        Order Allow,Deny
        Allow from all
</span>&lt;/Directory&gt;</pre>
<p>หลังแก้ไขไฟล์คอนฟิกของเว็บเซิร์ฟเวอร์ ต้องใช้คำสั่ง service เพื่อรีสตาร์ตให้คอนฟิกใหม่มีผล</p>
<pre>[root@fc11-64min Packages]# <strong>service httpd restart
</strong>Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
<p>ทดลองเรียกเว็บ cacti ผ่าน web browser</p>
<p><img title="01 - Cannot connect database" src="http://spalinux.com/wp-content/uploads/2009/07/01-cacti-error-cannot-conne.png" alt="01 - Cannot connect database" width="816" height="255" /></p>
<h4>สร้างฐานข้อมูลของ cacti</h4>
<p>จากตัวอย่างด้านบน มี error เกิดขึ้น ยังไม่สามารถใช้งานได้</p>
<pre><span style="color: #ff0000;">FATAL: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'</span></pre>
<p>คือต้องสร้าง user, database และ table สำหรับเก็บข้อมูลของ cacti ใน MySQL ก่อน</p>
<p>คอนฟิกของ cacti ในส่วน database จะถูกเก็บอยู่ในไฟล์ /etc/cacti/db.php</p>
<pre>[root@fc11-64min ~]# <strong>cat /etc/cacti/db.php
</strong>&lt;?php
...
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";</pre>
<pre>/* Default session name - Session name must contain alpha characters */
#$cacti_session_name = "Cacti";</pre>
<pre>?&gt;</pre>
<p><strong>หมายเหตุ </strong>ในที่นี้จะสร้าง database และ user ตามค่าดีฟอลต์เลย ซึ่งเหมาะสำหรับการทดสอบเพื่อเรียนรู้โปรแกรม cacti แต่ถ้านำไปใช้จริง production แนะนำให้เปลี่ยนค่าตัวแปรเหล่านี้เพื่อความปลอดภัย</p>
<p>ขั้นแรกต้องสร้าง database ให้ cacti ก่อน โดยสร้างชื่อตามตัวแปร $database_default</p>
<p>ในที่นี้จะใช้คำสั่ง mysql สร้างเลย คุณสามารถใช้โปรแกรมอื่นๆ ได้เช่น phpmyadmin</p>
<pre>[root@fc11-64min ~]# <strong>mysql -u root -p
</strong>Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 140
Server version: 5.1.32 Source distribution</pre>
<pre>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</pre>
<pre>mysql&gt; <strong>CREATE DATABASE <span style="color: #0000ff;">cacti</span>;
</strong>Query OK, 1 row affected (0.00 sec)</pre>
<pre>mysql&gt;</pre>
<p>ขั้นต่อไปต้องสร้าง user และ password สำหรับการเชื่อมเข้า database ตามค่าตัวแปร $database_username, $database_password</p>
<pre>mysql&gt; <strong>GRANT ALL ON cacti.* TO <span style="color: #0000ff;">cactiuser </span>IDENTIFIED BY '<span style="color: #0000ff;">cactiuser</span>';
</strong>Query OK, 0 rows affected (0.09 sec)</pre>
<pre>mysql&gt; <strong>quit
</strong>Bye</pre>
<h4>สร้าง table ใน cacti database</h4>
<p>สุดท้ายต้องสร้าง table ต่างๆ เพื่อเก็บค่าของ cacti โดยสามารถใช้ไฟล์โครงสร้าง table ที่ติดตั้งมาให้อยู่แล้วใน /usr/share/doc/cacti-0.8.7d/cacti.sql</p>
<pre>[root@fc11-64min ~]# <strong>cat /usr/share/doc/cacti-0.8.7d/cacti.sql | mysql -u cactiuser -p cacti
</strong>Enter password:
[root@fc11-64min ~]#</pre>
<p>ทดลองใช้ user ที่สร้างขึ้นเข้า database</p>
<pre>[root@fc11-64min ~]# <strong>mysql -u cactiuser -p
</strong>Enter password:</pre>
<pre>Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 142
Server version: 5.1.32 Source distribution</pre>
<pre>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</pre>
<pre>mysql&gt; <strong>SHOW DATABASES;
</strong>+--------------------+
| Database           |
+--------------------+
| information_schema |
| <strong><span style="color: #0000ff;">cacti</span></strong>              |
+--------------------+
2 rows in set (0.08 sec)</pre>
<pre>mysql&gt; <strong>CONNECT cacti;
</strong>Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A</pre>
<pre>Connection id:    149
Current database: cacti</pre>
<pre>mysql&gt; <strong>SHOW TABLES;
</strong>+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
| data_template_data        |
| data_template_data_rra    |
| data_template_rrd         |
| graph_local               |
| graph_template_input      |
| graph_template_input_defs |
| graph_templates           |
| graph_templates_gprint    |
| graph_templates_graph     |
| graph_templates_item      |
| graph_tree                |
| graph_tree_items          |
| host                      |
| host_graph                |
| host_snmp_cache           |
| host_snmp_query           |
| host_template             |
| host_template_graph       |
| host_template_snmp_query  |
| poller                    |
| poller_command            |
| poller_item               |
| poller_output             |
| poller_reindex            |
| poller_time               |
| rra                       |
| rra_cf                    |
| settings                  |
| settings_graphs           |
| settings_tree             |
| snmp_query                |
| snmp_query_graph          |
| snmp_query_graph_rrd      |
| snmp_query_graph_rrd_sv   |
| snmp_query_graph_sv       |
| user_auth                 |
| user_auth_perms           |
| user_auth_realm           |
| user_log                  |
| version                   |
+---------------------------+
48 rows in set (0.00 sec)</pre>
<pre>mysql&gt; <strong>quit</strong>
Bye
[root@fc11-64min ~]#</pre>
<p>เปิด web browser อีกครั้ง เรียกไปที่ http://&lt;ip-address&gt;/cacti/ หน้าจอจะ redirect ไปยังหน้าสำหรับการติดตั้งต่อไป</p>
<p><img title="Cacti Installation Guide" src="http://spalinux.com/wp-content/uploads/2009/07/02-cacti-installation-guide.png" alt="Cacti Installation Guide" width="816" height="571" /></p>
<p> </p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_1">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 1</a></li>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_3">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 3</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Cacti บน Fedora 11 ตอนที่ 1</title>
		<link>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_1</link>
		<comments>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_1#comments</comments>
		<pubDate>Sat, 18 Jul 2009 08:45:34 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SNMP]]></category>
		<category><![CDATA[install cacti]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=859</guid>
		<description><![CDATA[Cacti จัดเป็นโปรแกรมทางด้าน Network Management อย่างหนึ่ง คุณสมบัติหลักๆ คือสามารถไปดึงค่าต่างๆ จากอุปกรณ์ network ไม่ว่าจะเป็น Server, Router, Switch ผ่านทาง Poller  นำข้อมูลมาเก็บไว้ใน Data Storage  แล้วสามารถนำค่ามา plot เป็นกราฟ โดยใช้ RRDTool (ซึ่งเป็นโปรแกรมสร้างกราฟเดียวกันกับ MRTG) ในตอนที่ 1 จะอธิบายวิธีการติดตั้งไฟล์ที่จำเป็นและ Cacti บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด ก่อนการติดตั้ง Cacti ได้นั้น ในเครื่องต้องมี Apache, PHP, MySQL, net-snmp ติดตั้งอยู่ก่อนแล้ว ถ้าขาดโปรแกรมใดไป คำสั่ง rpm จะไม่ยอมให้ติดตั้ง ตัวอย่าง error เมื่อขาดโปรแกรมที่จำเป็นต่อ cacti [...]]]></description>
			<content:encoded><![CDATA[<p>Cacti จัดเป็นโปรแกรมทางด้าน Network Management อย่างหนึ่ง คุณสมบัติหลักๆ คือสามารถไปดึงค่าต่างๆ จากอุปกรณ์ network ไม่ว่าจะเป็น Server, Router, Switch ผ่านทาง Poller  นำข้อมูลมาเก็บไว้ใน Data Storage  แล้วสามารถนำค่ามา plot เป็นกราฟ โดยใช้ RRDTool (ซึ่งเป็นโปรแกรมสร้างกราฟเดียวกันกับ MRTG)</p>
<p>ในตอนที่ 1 จะอธิบายวิธีการติดตั้งไฟล์ที่จำเป็นและ Cacti บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ <a href="http://spalinux.com/2009/06/install_minimal_fedora_11">ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด</a></p>
<p><span id="more-859"></span></p>
<p>ก่อนการติดตั้ง Cacti ได้นั้น ในเครื่องต้องมี Apache, PHP, MySQL, net-snmp ติดตั้งอยู่ก่อนแล้ว ถ้าขาดโปรแกรมใดไป คำสั่ง rpm จะไม่ยอมให้ติดตั้ง</p>
<p>ตัวอย่าง error เมื่อขาดโปรแกรมที่จำเป็นต่อ cacti</p>
<pre>[root@fc11-64min ~]# <strong>rpm -i cacti-0.8.7d-3.fc11.noarch.rpm
</strong>error: Failed dependencies:
        /usr/bin/php is needed by cacti-0.8.7d-3.fc11.noarch
        httpd is needed by cacti-0.8.7d-3.fc11.noarch
        mysql is needed by cacti-0.8.7d-3.fc11.noarch
        net-snmp is needed by cacti-0.8.7d-3.fc11.noarch
        php is needed by cacti-0.8.7d-3.fc11.noarch
        php-mysql is needed by cacti-0.8.7d-3.fc11.noarch
        php-snmp is needed by cacti-0.8.7d-3.fc11.noarch</pre>
<p>บทความต่อไปนี้ แสดงขั้นตอนและวิธีติดตั้งไฟล์ต่างๆ ที่จำเป็นต่อการรัน cacti</p>
<ul>
<li><a href="http://spalinux.com/2009/06/install_mysql_on_fedora_11">ติดตั้ง MySQL บน Fedora 11</a></li>
<li><a href="http://spalinux.com/2009/06/install_apache_php_on_fedora_11">ติดตั้ง Apache, PHP บน Fedora 11</a></li>
<li><a href="http://spalinux.com/2009/07/install_php_module_on_fedora_11">ติดตั้ง PHP Module เพิ่มบน Fedora 11</a></li>
<li><a href="http://spalinux.com/2009/07/install_php_module_snmp">ติดตั้ง PHP Module: snmp</a></li>
<li><a href="http://spalinux.com/2009/06/install_rrdtool_on_fedora_11">ติดตั้ง rrdtool บน Fedora 11</a></li>
</ul>
<p> </p>
<h4>ติดตั้ง cacti</h4>
<p>ดาวน์โหลดไฟล์ rpm ของ cacti ได้จาก Fedora 11 everything แล้วใช้คำสั่ง rpm ติดตั้ง</p>
<pre>[root@fc11-64min ~]# <strong>rpm -i cacti-0.8.7d-3.fc11.noarch.rpm</strong></pre>
<p>ถึงตอนนี้ยังไม่สามารถเรียกใช้ cacti ได้ ต้องแก้ไขคอนฟิกเพื่อเชื่อมโยงเข้าฐานข้อมูลก่อน ในบทความต่อไป</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_2">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 2</a></li>
<li><a href="http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_3">ติดตั้ง Cacti บน Fedora 11 ตอนที่ 3</a></li>
<li><a href="http://www.cacti.net/" target="_blank">Cacti: The Complete RRDTool-based Graphing Solution</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/11/Everything/x86_64/os/Packages/" target="_blank">Fedora 11 Everything</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/install_cacti_on_fedora_11_part_1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง PHP Module: snmp</title>
		<link>http://spalinux.com/2009/07/install_php_module_snmp</link>
		<comments>http://spalinux.com/2009/07/install_php_module_snmp#comments</comments>
		<pubDate>Sat, 18 Jul 2009 08:28:09 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[install_php-snmp]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=855</guid>
		<description><![CDATA[SNMP เป็นโปรโตคอลมาตรฐานสำหรับการบริหารจัดการอุปกรณ์ทางด้านเครือข่าย คือสามารถที่จะดึงค่าที่ต้องการ หรือคอนฟิกค่าของอุปกรณ์ได้ การที่จะสามารถเขียน PHP ให้เรียกใช้ฟังก์ชั่นเกี่ยวกับ snmp ได้ ต้องติดตั้งโมดูล php-snmp ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง [root@fc11-64min ~]# mount /dev/scd0 /media/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@fc11-64min ~]# cd /media/Packages/ ติดตั้ง net-snmp ต้องลงโปรแกรม net-snmp ก่อนที่จะติดตั้ง โมดูล php-snmp [root@fc11-64min Packages]# rpm -i lm_sensors-3.1.0-1.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i net-snmp-libs-5.4.2.1-10.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i [...]]]></description>
			<content:encoded><![CDATA[<p>SNMP เป็นโปรโตคอลมาตรฐานสำหรับการบริหารจัดการอุปกรณ์ทางด้านเครือข่าย คือสามารถที่จะดึงค่าที่ต้องการ หรือคอนฟิกค่าของอุปกรณ์ได้</p>
<p>การที่จะสามารถเขียน PHP ให้เรียกใช้ฟังก์ชั่นเกี่ยวกับ snmp ได้ ต้องติดตั้งโมดูล php-snmp</p>
<p><span id="more-855"></span>ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง</p>
<pre>[root@fc11-64min ~]# <strong>mount /dev/scd0 /media/
</strong>mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc11-64min ~]# <strong>cd /media/Packages/</strong></pre>
<h4>ติดตั้ง net-snmp</h4>
<p>ต้องลงโปรแกรม net-snmp ก่อนที่จะติดตั้ง โมดูล php-snmp</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -i lm_sensors-3.1.0-1.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i net-snmp-libs-5.4.2.1-10.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i net-snmp-5.4.2.1-10.fc11.x86_64.rpm</strong></pre>
<p>ติดตั้งไฟล์ net-snmp-utils และโมดูล php-snmp เพิ่มเติมโดยสองไฟล์นี้ต้องดาวน์โหลดมาจาก Fedora 11 Everything</p>
<pre>[root@fc11-64min ~]# <strong>rpm -i net-snmp-utils-5.4.2.1-10.fc11.x86_64.rpm
</strong>[root@fc11-64min ~]# <strong>rpm -i php-snmp-5.2.9-2.fc11.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง service เพื่อรีสตาร์ตเว็บเซิร์ฟเวอร์</p>
<pre>[root@fc11-64min Packages]# <strong>service httpd restart
</strong>Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
<h4>ทดสอบ php-snmp</h4>
<p>ทดลองเรียกใช้ฟังก์ชั่น snmpwalk เพื่อดึงค่า MIB ที่เกี่ยวกับ system จาก IP 192.168.1.254</p>
<pre>[root@fc11-64min html]# <strong>cat test-snmp.php
</strong>&lt;?php
$_ret = snmpwalk('192.168.1.254', 'public', 'system');
print_r($_ret);
?&gt;</pre>
<pre>[root@fc11-64min html]# <strong>php test-snmp.php</strong></pre>
<pre>Array
(
    [0] =&gt; STRING: Linux ...
    [1] =&gt; OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
...</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/06/install_apache_php_on_fedora_11">ติดตั้ง Apache, PHP บน Fedora 11</a></li>
<li><a href="http://spalinux.com/2009/07/install_php_module_on_fedora_11">ติดตั้ง PHP Module เพิ่มบน Fedora 11</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/11/Everything/x86_64/os/Packages/" target="_blank">Fedora 11 Everything</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/install_php_module_snmp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง PHP Module เพิ่มบน Fedora 11</title>
		<link>http://spalinux.com/2009/07/install_php_module_on_fedora_11</link>
		<comments>http://spalinux.com/2009/07/install_php_module_on_fedora_11#comments</comments>
		<pubDate>Sat, 18 Jul 2009 08:01:27 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[php_module]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=848</guid>
		<description><![CDATA[จากบทความ ติดตั้ง Apache, PHP บน Fedora 11 เราได้ติดตั้ง เว็บเซิร์ฟเวอร์ Apache และ PHP เพื่อให้สามารถเขียนเว็บเพจโดยใช้ภาษา PHP ได้ แต่ถ้าทำเพียงเท่านี้ จะะสามารถเรียกใช้ฟังก์ชั่นแค่พื้นฐานเท่านั้น  ถ้าต้องการใช้ฟังก์ชั่นอื่นๆ ด้วย เช่นเชื่อมต่อเข้ากับ MySQL เราจำเป็นต้องติดตั้ง PHP Module เพิ่มเติม ในบทความนี้อธิบายวิธีการตรวจสอบและติดตั้งโมดูลเพิ่มเติม  ตัวอย่างจะเป็นการติดตั้งโมดูล MySQL เพื่อให้สามารถเขียน PHP เชื่อมเข้ากับฐานข้อมูลได้ ตัวอย่าง error เมื่อเรียกใช้ฟังก์ชั่นของโมดูลที่ไม่มีหรือยังไม่ได้ติดตั้ง [root@fc11-64min html]# cat test-mysql.php &#60;?php mysql_connect('localhost', 'mysql_user', 'mysql_password'); ?&#62; [root@fc11-64min html]# php test-mysql.php PHP Fatal error:  Call to undefined function mysql_connect() in [...]]]></description>
			<content:encoded><![CDATA[<p>จากบทความ <a href="http://spalinux.com/2009/06/install_apache_php_on_fedora_11">ติดตั้ง Apache, PHP บน Fedora 11</a> เราได้ติดตั้ง เว็บเซิร์ฟเวอร์ Apache และ PHP เพื่อให้สามารถเขียนเว็บเพจโดยใช้ภาษา PHP ได้ แต่ถ้าทำเพียงเท่านี้ จะะสามารถเรียกใช้ฟังก์ชั่นแค่พื้นฐานเท่านั้น  ถ้าต้องการใช้ฟังก์ชั่นอื่นๆ ด้วย เช่นเชื่อมต่อเข้ากับ MySQL เราจำเป็นต้องติดตั้ง PHP Module เพิ่มเติม</p>
<p>ในบทความนี้อธิบายวิธีการตรวจสอบและติดตั้งโมดูลเพิ่มเติม  ตัวอย่างจะเป็นการติดตั้งโมดูล MySQL เพื่อให้สามารถเขียน PHP เชื่อมเข้ากับฐานข้อมูลได้</p>
<p><span id="more-848"></span></p>
<p>ตัวอย่าง error เมื่อเรียกใช้ฟังก์ชั่นของโมดูลที่ไม่มีหรือยังไม่ได้ติดตั้ง</p>
<pre>[root@fc11-64min html]# <strong>cat test-mysql.php
</strong>&lt;?php
mysql_connect('localhost', 'mysql_user', 'mysql_password');
?&gt;</pre>
<pre>[root@fc11-64min html]# <strong>php test-mysql.php
</strong><span style="color: #ff0000;">PHP Fatal error:  Call to undefined function mysql_connect() in /var/www/html/test-mysql.php on line 2</span></pre>
<p>วิธีการดูว่าตอนนี้สามารถใช้ PHP Module อะไรบ้าง ทำได้โดยใช้ฟังก์ชั่น phpinfo() แล้วเรียกผ่านหน้าเว็บเพจ หรือรันคำสั่ง php ตามด้วยออปชั่น &#8216;-m&#8217;</p>
<pre>[root@fc11-64min ~]# <strong>php -m
</strong>[PHP Modules]
bz2
calendar
ctype
curl
date
dbase
exif
filter
ftp
gettext
gmp
hash
iconv
json
libxml
openssl
pcntl
pcre
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
xml
zip
zlib</pre>
<pre>[Zend Modules]</pre>
<p>บาง module สามารถติดตั้งจากแผ่นดีวีดีได้ แต่อื่นๆ ต้องดาวน์โหลดจาก Fedora 11 everything เอง</p>
<p>ใส่แผ่นดีวีดี Fedora 11 แล้วใช้คำสั่ง mount เพื่อดูไฟล์ในแผ่น</p>
<pre>[root@fc11-64min ~]# <strong>mount /dev/scd0 /media/
</strong>mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc11-64min ~]# <strong>cd /media/Packages/</strong></pre>
<pre>[root@fc11-64min Packages]# <strong>ls -l php*
</strong>-rw-r--r--. 2 root root 1257206 2009-04-18 00:28 php-5.2.9-2.fc11.x86_64.rpm
-rw-r--r--. 2 root root 2390634 2009-04-18 00:29 php-cli-5.2.9-2.fc11.x86_64.rpm
-rw-r--r--. 2 root root  271487 2009-04-18 00:29 php-common-5.2.9-2.fc11.x86_64.rpm
-rw-r--r--. 2 root root   35700 2009-04-18 00:31 php-ldap-5.2.9-2.fc11.x86_64.rpm
-rw-r--r--. 2 root root   89294 2009-04-18 00:31 php-mysql-5.2.9-2.fc11.x86_64.rpm
-rw-r--r--. 2 root root   67938 2009-04-18 00:31 php-pdo-5.2.9-2.fc11.x86_64.rpm</pre>
<h4>ติดตั้ง PHP MySQL Module</h4>
<p>ใช้คำสั่ง rpm เพื่อติดตั้ง module เพิ่มเติม สำหรับการติดตั้ง MySQL module ต้องติดตั้ง PDO module ก่อน</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -ivh php-pdo-5.2.9-2.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -ivh php-mysql-5.2.9-2.fc11.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง php เพื่อตรวจสอบ module ที่ติดตั้งเพิ่มเติม</p>
<pre>[root@fc11-64min Packages]# <strong>php -m
</strong>[PHP Modules]
bz2
calendar
ctype
curl
date
dbase
exif
filter
ftp
gettext
gmp
hash
iconv
json
libxml
<strong><span style="color: #0000ff;">mysql
mysqli
</span></strong>openssl
pcntl
pcre
<span style="color: #0000ff;"><strong>PDO
pdo_mysql
pdo_sqlite</strong>
</span>readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
xml
zip
zlib</pre>
<pre>[Zend Modules]</pre>
<p>หลังจากการติดตั้ง PHP module เพิ่มเติม การรัน PHP ที่เป็น command line สามารถเรียกใช้โมดูลใหม่นี้ได้เลย แต่ถ้าต้องการเรียกผ่านเว็บเซอร์วิส ต้องรีสตาร์ตเว็บเซิร์ฟเวอร์ก่อน</p>
<p>ใช้คำสั่ง service เพื่อรีสตาร์ตเว็บเซิร์ฟเวอร์</p>
<pre>[root@fc11-64min Packages]# <strong>service httpd restart
</strong>Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
<p>ตัวอย่างการใช้ฟังก์ชั่น phpinfo() แสดงผลผ่านหน้าเว็บเพจ เพื่อดูข้อมูลรายละเอียดโมดูล MySQL ที่ติดตั้งใหม่</p>
<p><img title="phpinfo(); MySQL module" src="http://spalinux.com/wp-content/uploads/2009/07/01_PHP_MySQL_module.png" alt="phpinfo(); MySQL module" width="816" height="749" /></p>
<p> </p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/06/install_apache_php_on_fedora_11">ติดตั้ง Apache, PHP บน Fedora 11</a></li>
<li><a href="http://www.php.net/manual/en/funcref.php" target="_blank">PHP: Function Reference &#8211; Manual</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/install_php_module_on_fedora_11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Apache, PHP บน Fedora 11</title>
		<link>http://spalinux.com/2009/06/install_apache_php_on_fedora_11</link>
		<comments>http://spalinux.com/2009/06/install_apache_php_on_fedora_11#comments</comments>
		<pubDate>Sun, 28 Jun 2009 12:13:49 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[install apache php]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=825</guid>
		<description><![CDATA[ในบทความนี้จะอธิบายวิธีการติดตั้งและคอนฟิก Apache บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง [root@fc11-64min ~]# mount /dev/scd0 /media/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@fc11-64min ~]# cd /media/Packages/ ติดตั้ง Apache Web Server [root@fc11-64min Packages]# rpm -i apr-1.3.3-4.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i apr-util-1.3.4-3.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i apr-util-ldap-1.3.4-3.fc11.x86_64.rpm [root@fc11-64min Packages]# [...]]]></description>
			<content:encoded><![CDATA[<p>ในบทความนี้จะอธิบายวิธีการติดตั้งและคอนฟิก Apache บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ <a href="http://spalinux.com/2009/06/install_minimal_fedora_11">ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด</a></p>
<p><span id="more-825"></span>ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง</p>
<pre>[root@fc11-64min ~]# <strong>mount /dev/scd0 /media/
</strong>mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc11-64min ~]# <strong>cd /media/Packages/</strong></pre>
<p>ติดตั้ง Apache Web Server</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -i apr-1.3.3-4.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i apr-util-1.3.4-3.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i apr-util-ldap-1.3.4-3.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i httpd-tools-2.2.11-8.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i httpd-2.2.11-8.x86_64.rpm</strong></pre>
<p>ติดตั้ง PHP พื้นฐาน</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -i php-common-5.2.9-2.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i php-cli-5.2.9-2.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i php-5.2.9-2.fc11.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิสเว็บเซิร์ฟเวอร์</p>
<pre>[root@fc11-64min ~]# <strong>service httpd start
</strong>Starting httpd:                                            [  OK  ]</pre>
<p>ทดลองเปิดจาก browser</p>
<p><img title="Fedora 11 - Test Page" src="http://spalinux.com/wp-content/uploads/2009/06/01_Fedora_11_Test_Page.png" alt="Fedora 11 - Test Page" width="600" height="546" /></p>
<p> </p>
<p>เขียนไฟล์ phpinfo.php ใส่ไว้ในไดเร็คทอรี /var/www/html/ เพื่อตรวจสอบคอนฟิกของ Apache และ PHP</p>
<pre>[root@fc11-64min html]# <strong>cat phpinfo.php
</strong>&lt;?php
phpinfo();
?&gt;</pre>
<pre>ตัวอย่างผลลัพธ์จากการเรียกไฟล์ phpinfo.php ผ่าน Web Browser</pre>
<p><img title="Fedora 11 - phpinfo" src="http://spalinux.com/wp-content/uploads/2009/06/02_Fedora_11_phpinfo.png" alt="Fedora 11 - phpinfo" width="600" height="546" /></p>
<p>ในบทความนี้เป็นการติดตั้งเว็บเซิร์ฟเวอร์และคอนฟิก PHP แบบพื้นฐานเท่านั้น คือสามารถใช้เขียนโปรแกรมและใช้ฟังก์ชั่นหลักๆ ของ PHP ได้ แต่ยังไม่สามารถใช้ MySQL, GD, SNMP, &#8230; ซึ่งเราต้องลงไฟล์ rpm เพิ่มเติมต่อไป</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/install_php_module_on_fedora_11">ติดตั้ง PHP Module เพิ่มบน Fedora 11</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/06/install_apache_php_on_fedora_11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
