วันพฤหัสบดีที่ 23 ธันวาคม พ.ศ. 2553

การ Fix ip การ์ดแลนสองใบ บนลินุกซ์ (การ์ดหนึ่ง INTERNET อีกการ์ด HUB)

ก่อนจะทำ DHCP server ได้ต้องทำตรงนี้้ได้ก่อนครับ วิธีการมันก็ง่ายแต่ไม่ยาก

หรือไม่ยากแต่ง่ายนั่นเอง

เริ่่มมาก็ ใช้สิทธิ์รูท sudo -i [Enter]
กระแทกพาสเวิร์ดเข้าไปครับ จากนั้นก็

nano /etc/network/interfaces

จะเจอข้อความประมาณนี้ครับ


auto eth0
iface eth0 inet dhcp

จากนั้นก็ตั้งไปใบแรกอยากให้เป็นอะไร (เป็นอินเตอร์เน็ต หรือเข้าฮับเพื่อกระจาย)

auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
dns-name xxx.xxx.xxx.xxx

ใบที่สองก็

auto eth1
และใส่ไอพีลงไปเช่นกัน จากนั้นก็

/etc/init.d/networking restart [Enter]

จบและ โฮ๊ะ ไรวะ??

วันอาทิตย์ที่ 12 ธันวาคม พ.ศ. 2553

การคำนวณ subnet

Subnet mask เป็น Parameter อีกตัวหนึ่งที่ต้องระบุควบคู่กับหมายเลข IP Address หน้าทีของ Subnet mask ก้คืิอ การช่วยในการแยกแยะว่าส่วนใดภายในหมายเลข IP Address เป็น Network Address และส่วนใดเป็นหมายเลข Host Address ดังนั้น ท่านจะสังเกตได้ว่า เมื่อเราระบุ IP Address ให้กับเครื่องคอมพิวเตอร์์ เราจำเป็นต้องระบุ Subnet mask ลงไปด้วยทุกครั้ง
บทความการคำนวณ หา Subnet นี้ ไม่ได้ลงรายละเอียด ถึงขนาด Bit น่ะครับ เพราะตัวผมเองไม่เกงเรื่องพวกนี้ ผมคิดว่าถ้า หาตาม internet  หรือ หนังสือจะทำให้เข้าใจง่ายกว่าที่อ่านจากบทความนี้  ผมจะเน้นเรื่องของการ คำนวณยังไงให้ไว ให้ถูกต้องแม่นยำเพื่อใช้สำหรับ สอบ หรือ ประโยชน์อื่นๆ  น่ะครับ


Default Subnet mask ของแต่ล่ะ Class ดั้งนี้
• Class A จะมี Subnet mask เป็น 255.0.0.0 หรือเลขฐานสองดัง้นี้
11111111.00000000.00000000.00000000
(รวมเลข 1 ให้หมด ก็จะได้เท่ากับ 255)

Class B จะมี Subnet mask เป็น 255.255.0.0 หรือเลขฐานสองดัง้นี้11111111.11111111.00000000.00000000

Class C จะมี Subnet mask เป็น 255.255.255.0 หรือเลขฐานสองดัง้นี้11111111.11111111.11111111.00000000
มาถึงจุดนี้ผมอยากให้ท่านสังเกตว่า
"ตำแหน่ง ของ Bit ไหน ในหมายเลข IP Address ที่ถูกกันไว้ให้เป็น Network Address หรือ Subnet Address จะมีค่าของ Bit ตำแหน่งที่ตรงกันใน Subnet mask เป็น 1 เสมอ"
หลักการพื้นฐานของการทำ Subnet


หลัก การทำงานมีอยู่ว่า เราจะต้องยืม bitในตำแหน่งที่แต่เดิมเคยเป็น Host Address มาใช้เป็น Sub-network Address ด้วยการแก้ไขค่า Subnet mask ให้เป็นค่าใหม่ที่เหมาะสม

สูตรการคำนวณ  2 ยกกำลัง n  - 2 = ??ู

การวางแผน คำนวณ Subnet 
1. หาจำนวน Segment ทั้งหมดที่ต้องการ Subnet address   จำนวนใน Segment ในที่นี้ นับจำนวน network ที่อยุ่ในแต่ล่ะฝั่งอขง Router หรือของ switch Layer 3 หรือ หากมีการ implement VLAN จะนับจำนวนของ VLAN ก็ได้
2. จำนวนเครื่อง computer ทั้งหมดในแต่ล่ะ Segment (ในที่นี้เราสมมุติ ว่าจำนวนเครืื่อง มีจำนวนใกล้เคียงกัน)
3. หาจำนวน bit ที่จะต้องยืมมาใช้เป็น Subnet Address โดยพิจารณาจาก ข้อ.1  และ ข้อ.2 โดยอาศัยสูตรง่าย ๆ
ถ้ายืมมาจำนวน x bit แล้ว ถ้านำเอา 2 มายกกำลังด้วย x แล้ว หักลบออกอีก 2 แล้วได้ค่ามากกว่า หรือ เท่ากับจำนวน
Subnet address ที่เราต้องการ
ขั้นต่อมา  ก้ต้องนำ bit ที่เหลือจากการยืมมา เข้าสูตรเดิมคือ  2 ยกกำลัง n -2 = ??
4. นำ subnet mask ที่ได้มาคำนวณร่วมกับหมายเลข Network Address เดิมเพื่อหา Subnet Address ทั้งหมดที่เป็นไปได้ เพื่อที่จะนำไปกำหนดให้กับ Network แต่ล่ะ Segment
5. คำนวณหมายเลข IP Address ที่เป็นไปได้ทั้งหมดในแต่ล่ะ Subnet แล้วนำไป กำหนดให้กับเครื่อง computer เครื่อง server  และแต่ล่ะ interface ของ router จนครบ
  
ตัวอย่างการคำนวณ น่ะครับ
Network Address  192.168.100.0
Subnetmask        255.255.255.192 (/26)

• ได้ทั้งหมดกี่ subnet
้bit ที่ถูกยืมมา  2 
255.255.255.11000000
ดั้งนั้น จำนวน subnet ที่ได้คือ 2 ยกกำลัง 2  - 2  = 2  subnet

• ได้ทั้งหมดกี่ Host
Bit ที่เหลือจากการยืมจากข้างบน  คือ 6
ก็นำมาเข้าตามสูตรเหมือนกัน 2 ยกกำลัง 6 - 2 =  62 host << ที่จะนำไปใช้กับเครื่อง ใ 1 วง network

• หมายเลข Subnet ที่ถูกต้องเป็นหมายเลขอะไรบ้าง ??
Subnet แรก   192.168.100.0 1 000000    192.168.100.64
Subnet สอง   192.168.100. 1 0 000000    192.168.100.128

• หมายเลข Host ในแต่ล่ะ subnet เป็นอย่างไร ?
Subnet แรก   192.168.100.64  
ที่ใช้ได้ 192.168.100.65 - 192.168.100.126

Subnet สุดท้าย 192.168.100.128
ที่ใช้ได้ 192.168.100.129 - 192.168.100.190
___________________________________

อีกตัวอย่างการคำนวณ น่ะครับ
Network Address  192.168.100.0
Subnetmask        255.255.255.224 (/27)

• ได้ทั้งหมดกี่ subnet
้bit ที่ถูกยืมมา  3
255.255.255.1 1 1 00000
ดั้งนั้น จำนวน subnet ที่ได้คือ 2 ยกกำลัง 3  - 2  = 6 subnet

• ได้ทั้งหมดกี่ Host
Bit ที่เหลือจากการยืมจากข้างบน  คือ 5
ก็นำมาเข้าตามสูตรเหมือนกัน 2 ยกกำลัง 5 - 2 =  30 host << ที่จะนำไปใช้กับเครื่อง ใ 1 วง network

• หมายเลข Subnet ที่ถูกต้องเป็นหมายเลขอะไรบ้าง ??
Subnet Zero คือ 192.168.100.0  - 192.168.100.31 <<  ไม่ใช่น่ะครับ วงนี้
Subnet แรก  คือ   192.168.100.32  -  192.168.100.63
Subnet สอง  คือ   192.168.100.64  -  192.168.100.95
Subnet สาม  คือ   192.168.100.96  -  192.168.100.127
Subnet สี่    คือ   192.168.100.128  -  192.168.100.159Subnet ห้า  คือ   192.168.100.160  -  192.168.100.191Subnet หก  คือ   192.168.100.192  -  192.168.100.223
Broadcast  คือ   192.168.100.224  -  192.168.100.255  << อันนี้ก็ไม่ใช่น่ะครับ

จะ เห็นได้ว่า มีแค่เพียง 6 subnet เท่านั้น ที่ใช้ได้  แต่ในทางปฏิบัติ เราสามารถใช้ คำสั่ง subnet zero ได้น่ะครับให้สามารถใช้งานได้ แต่ทีผมแนะนำให้ ลบออกสอง คือในทางทฤษฏี น่ะครับ แต่ก็ควรทำน่ะ
มาถึงจุดนี้ก้ต้องทำได้กัน้บางแล้วน่ะครับ 
Laughing แต่มันยังไม่จบหรอกน่ะครับ ยังมีความซับซ้อนมากขึ้นไปอีก
ที่มา:http://www.compspot.net/index.php?option=com_content&task=view&id=96&Itemid=46

วันเสาร์ที่ 11 ธันวาคม พ.ศ. 2553

How to set up DHCP server on linux ubuntu server

DHCP(Dynamic Host Configuration Protocol)
    คือ โปรโตคอลที่ใช้ในการกำหนด IP Address อัตโนมัติแก่เครื่องลูกข่ายบนระบบ ที่ติดตั้ง TCP/IP สำหรับ DHCP server มีหน้าที่แจก IP ในเครือข่ายไม่ให้ซ้ำ เป็นการลดความซ้ำซ้อน เมื่อเครื่องลูกเริ่ม boot ก็จะขอ IP address, Subnet mark, หมายเลข DNS และ Default gateway
    ขั้นตอนการเชื่อมต่อของเครื่องลูกกับ DHCP server
    1. เครื่องลูกค้นหาเครื่อง DHCP server ในเครือข่าย โดยส่ง DHCP discover เพื่อร้องขอ IP address
    2. DHCP server จะค้นหา IP ที่ว่างอยู่ในฐานข้อมูล แล้วส่ง DHCP offer กลังไปให้เครื่องลูก
    3. เมื่อเครื่องลูกได้รับ IP ก็จะส่งสัญญาณตอบกลับ DHCP Request ให้เครื่องแม่ทราบ
    4. DHCP server ส่งสัญญาณ DHCP Ack กลับไปให้เครื่องลูก เพื่อแจ้งว่าเริ่มใช้งานได้


---

การ config DHCP server


http://www.ubuntugeek.com/how-to-install-and-configure-dhcp-server-in-ubuntu-server.html


ขอให้ดูลิ้งค์ไปก่อน ยังไม่ว่างแลปครับ

วันศุกร์ที่ 10 ธันวาคม พ.ศ. 2553

How to mount flash drive using linux command

1.Insert your drive into systems.

2.create temporary folder for hold directory (All of them)

 Do not forget about permission

#sudo -i [Enter]

input your password

#mkdir /tmp/flashdata



3.search for your drive

#fdisk -l


4.Find your flashdrive such as /dev/sdb
Then use command "mount" and follow "flashdrive" and your tempolary folder
(source to destination)

#mount /dev/sdb1 /tmp/data/

5.open folder

#cd /tmp/flashdata

6.Do not forget to unmount

#umount /dev/sdb1

End
Goodluck

วันอาทิตย์ที่ 28 พฤศจิกายน พ.ศ. 2553

วิธีการ compile ภาษา C บน GCC ให้ใช้ Module ของ MySQL ได้

โค้ดนี้นะครับ

#include <mysql.h>
#include <stdio.h>

main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "localhost";
   char *user = "root";
   char *password = "mysqlpass"; /* set me first */
   char *database = "mysql";

   conn = mysql_init(NULL);

   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }

   /* send SQL query */
   if (mysql_query(conn, "show tables")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }

   res = mysql_use_result(conn);

   /* output table name */
   printf("MySQL Tables in mysql database:\n");
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s \n", row[0]);

   /* close connection */
   mysql_free_result(res);
   mysql_close(conn);
}


ถ้าคอมไพล์ไปตรงๆเกิด Error ชัวร์ จะขึ้นประมาณนี้

mysql.c:1:19: error: mysql.h: No such file or directory
mysql.c: In function ‘main’:
mysql.c:5: error: ‘MYSQL’ undeclared (first use in this function)
mysql.c:5: error: (Each undeclared identifier is reported only once
mysql.c:5: error: for each function it appears in.)
mysql.c:5: error: ‘conn’ undeclared (first use in this function)
mysql.c:6: error: ‘MYSQL_RES’ undeclared (first use in this function)
mysql.c:6: error: ‘res’ undeclared (first use in this function)
mysql.c:7: error: ‘MYSQL_ROW’ undeclared (first use in this function)
mysql.c:7: error: expected ‘;’ before ‘row’
mysql.c:20: warning: incompatible implicit declaration of built-in function ‘exit’
mysql.c:26: warning: incompatible implicit declaration of built-in function ‘exit’
mysql.c:33: error: ‘row’ undeclared (first use in this function)


แน่นอนว่า ไม่มี libmysqlclient15-dev ครับ ให้ install เสีย

sudo apt-get install libmysqlclient15-dev

 แล้วจัดการคอมไพล์

$ gcc -o learn  -L/usr/lib/mysql -lmysqlclient learn.c

จบข่าว 

How to use gambas2 connect to database (MySQL)

โปรแกรมกุ้ง หรือ Gambas ผมเคยเขียนหนังสือสอนแจกมาอยู่พักหนึ่งครับ แต่ยังไม่มีโอกาสทำให้สำเร็จ ตรวจทาน และทำจริงๆจังๆเสียที ก็เอาบทความไปอ่านเล่นๆกันก่อน

Gambas ใช้ภาษา Basic ครับ ง่ายๆ ซึ่งก็ง่ายสมชื่อ มีวิธี connect กับ database ได้ง่ายๆดังนี้

1. อันดับแรกต้องติดตั้งโปรแกรมจัดการฐานข้อมูล DBMS ที่ชื่อว่า MySQL ก่อนนะครับ

2. เปิดโปรแกรม GAMBAS ขึ้นมา คลิก New Project และเลือก Option ตามภาพเลยครับ


อย่าลืมติ๊กถูกที่ Database Access ขั้นตอนต่อไปก็ คลิก Next ตั้งชื่อ Project ซึ่งไม่มีอะไร

3. จากนั้นทางด้านซ้ายมือนะครับ จะมีโฟลเดอร์ชื่อ Modules ให้คลิกขวาเลือก New > Module
แล้วตั้งชื่อว่า MODMain.module นะครับ

4.สำหรับ มือใหม่ให้ลองสร้างฐานข้อมูลอะไรขึ้นมาก็ได้ หากยังไม่ได้สร้างผมก็ขอแนะนำสำหรับมือใหม่ให้เปิด ( มือฉมังก็ข้ามไปได้เลยนะครับ )
Terminal ขึ้นมาพิมพ์

4.1mysql -u [ชื่อผู้ใช้งาน] -p กด Enter
จากนั้นจะมีรหัสผ่านให้ใส่ก็ใส่รหัสผ่านลงไป

4.2จากนั้นพิมพ์ show databases; จะปรากฏรายชื่อฐานข้อมูลขึ้นมา จากนั้นก็ให้สร้างฐานข้อมูลใดๆ
ที่ชื่อไม่ซ้ำกับฐานข้อมูลที่มีอยู่ ในที่นี้ผมใช้ green_forum

4.3 พิมพ์ create database green_forum; กด Enter เพื่อสร้างฐานข้อมูล

4.4 จากนั้นพิมพ์ use green_forum; เพื่อเลือกใช้ฐานข้อมูล

4.5 พิมพ์ create table green_members(int unsigned not null auto_increment primary key,username char(50)); กด Enter เพื่อสร้างตารางข้อมูลครับ
(จริงๆคำสั่งแบบนี้สร้างฐานข้อมูลไม่ดี ควรกำหนด charset แต่ในที่นี้ละไว้เพื่อการศึกษาเท่านั้นครับ

4.6จากนั้นให้ลองแทรกข้อมูลใดๆลงไปในตารางโดยพิมพ์
 insert into green_members values(null,'touchdeep'); แล้วกด Enter ครับ

ก็เป็นอันเรียบร้อย ทีนี้เราก็จะมีฐานข้อมูล + ตาราง พร้อมข้อมูลไว้ทดสอบ

5.จากนั้นพิมพ์โค้ดต่างๆลงไปใน MODMain.module  ดังนี้ครับ

Code: [Select]
PUBLIC $Con AS NEW Connection
PUBLIC PROCEDURE Connect()
                $Con.Close()              ' ปิดการเชื่อมต่อฐานข้อมูลใดๆที่ค้างไว้
                $Con.Type = "MySQL"       ' ชนิดฐานข้อมูล ในที่นี้ใช้ MySQL
                $Con.Host = "localhost"   ' ชื่อของเซิร์ฟเวอร์ หากใช้เครื่องตัวเองพิมพ์ localhost
                $Con.Login = "touchdeep"       'ชื่อผู้ใช้ฐานข้อมู
                $Con.Password = "Aib12Ioja" ' รหัสผ่าน
                $Con.Port = "3306"        ' พอร์ตที่ใช้ในการเชื่อมต่อ พอร์ตค่าดั้งเดิมคือ 3306
                $Con.Name = "green_forum"      ' ชื่อฐานข้อมูล ในที่นี้ผมใช้ green_forum
                $Con.Open()               ' เปิดการเชื่อมต่อฐานข้อมูล
END
PUBLIC SUB Main()
                Connect() ' รันโพรซีเยอร์ชื่อ Connect ครับ
                FMain.Visible = TRUE ' ให้ค่าตรรกศาสตร์ของฟอร์มชื่อ FMain ใน Properties ค่าเป็นจริง ( สามารถมองเห็นได้ )
END

6.เมื่อสร้างเสร็จแล้ว ด้านซ้ายมือให้คลิกขวาที่ไฟล์ MODMain เลือก Startup Class ครับ



7.จากนั้น ดับเบิ้ลคลิกที่ FMain เพื่อสร้างฟอร์มทดสอบมาครับ
ในที่นี้ผมใช้ Button นะครับ ท่านก็กำหนดคุณสมบัติตามใจชอบ ไม่ต้องเอาตามผมก็ได้ครับ



จากนั้น ดับเบิ้ลคลิกที่ Button ที่สร้างมา ใส่โค้ดนี้ลงไปครับ

Code: [Select]
DIM $result AS Result
DIM $UserLists AS String
$result = MODMain.$Con.Exec("select * from green_members;")
$UserLists = $result!username
Message.Info($UserLists)

8.จากนั้นลองรันทดสอบดู ปรากฎว่าผ่านครับ

จากที่ตกลงกันไว้ข้อ 4 ข้อมูลที่อยู่ในฟิลด์ username ก็คือ touchdeep นะครับ
โปรแกรมก็ดึงค่าออกมาได้ถูกต้อง



( ตอนแคปเจอร์ เม้าส์ดันไปบังภาพซะ แต่สาบานได้ว่าเขียนว่า touchdeep อิอิ )


บทความการเชื่อมต่อฐานข้อมูลก็ประมาณนี้ครับ

ผมคงต้องยกเครดิตบทความให้พี่ๆบอร์ดนี้ที่เคยสอนผม

และเว็บนี้ครับ http://gambasdoc.org/help/howto/database

ที่เหลือการต่อยอดโปรเจคก็ นำไปต่อเอาเองนะครับ เช่นทำโปรแกรมบัญชี โปรแกรมสมุดโทรศัพท์
โปรแกรม บลาๆๆๆ ฯลฯ

หากบทความผิดพลาดประการใด กราบขออภัยอย่างสูง มาไว้ ณ โอกาสนี้ด้วยครับ

Presentฃ by touchdeep

How to remove apache2 completly

เมื่อปีที่แล้วผมเขียนบทความการลง apache คราวนี้เรื่องการลบบ้างครับ

ปัญหาที่ผมเคยเจอคือ ลบแล้วแพ็คเกจไม่หมด ลงใหม่ก็ลงไม่ได้

เรียกว่า เก่าก็ไม่ไป ใหม่ก็ไม่มา

กรณีที่เป็น server นะครับ

ส่วน Desktop ง่ายๆเลยก็ synaptic package สำหรับ Desktop ไม่มีอะไรยาก ผมขออนุญาต
ไม่พิมพ์นะครับ (ขี้เกียจ)

หวังว่าคงเป็นประโยชน์ครับ

 ทำตามดังนี้ครับ

พิมพ์คำสั่ง sudo dpkg --get-selections | grep apache

จะปรากฎแพ็คเกจที่ติดตั้งที่เป็น apache ขึ้นมาครับ เช่น

apache2                  install
apache2-doc               install
apache2-mpm-prefork            install
apache2-utils               install
apache2.2-common            install
libapache2-mod-auth-mysql         install
libapache2-mod-php5            install

จากนั้นพิมพ์คำสั่งนี้เพื่อลบให้สิ้นกลิ่นน้ำนมเลยครับ

 sudo apt-get remove apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-auth-mysql libapache2-mod-php5

ถ้ารายชื่อแพ็คเกจคุณมีมากกว่านั้น ก็ใส่ไปมากกว่านั้นครับ
เห็นคำสั่งยาวอย่างง ก็คือ sudo apt-get remove ตามด้วยแพ็คเกจที่เจอครับ

เมื่อกด Enter จะเจอ warning ดังนี้

Reading package lists... Done
Building dependency tree     
Reading state information... Done
The following packages were automatically installed and are no longer required:
  ttf-wqy-zenhei ttf-kannada-fonts libaccess-bridge-java libmcrypt4 libt1-5 ttf-telugu-fonts rhino ttf-oriya-fonts dbconfig-common ttf-bengali-fonts
  php5-common
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-common jetty libapache2-mod-auth-mysql libapache2-mod-php5 php5 php5-curl php5-gd
  php5-mcrypt php5-mysql phpmyadmin
0 upgraded, 0 newly installed, 14 to remove and 1 not upgraded.
After this operation, 39.1MB disk space will be freed.
Do you want to continue [Y/n]? y

เครื่องแค่ถามว่าเราจะลบหรือไม่ ก็พิมพ์ y แล้วกด Enter

--------

ถ้าเคยลงไว้ ระบบจะถามว่า

Configuring phpmyadmin
-------------- 
  Since you are removing phpmyadmin, it's possible that you no longer want the underlying database.
    If you like, database removal can be handled with dbconfig-common.                                                                                 
If you know that you do want to keep this database, or if you want to handle the removal of this database manually, you should refuse this option. 

 Otherwise, you should choose this option.                                                                                                                                                                                                                                                               
Deconfigure database for phpmyadmin with dbconfig-common?                                                                                                                                       <Yes>                                                <No> 

ก็ให้ตอบ no ไปครับ

จากนั้นก็ติดตั้งใหม่ครับ

sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 libapache2-mod-auth-mysql



ถ้าสำเร็จ บรรทัดท้ายๆต้องเจอคำว่า

Setting up apache2-mpm-prefork (2.2.11-2ubuntu2.7) ...
 * Starting web server apache2                                                                                                                              apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                                                                                                                     [ OK ]

Setting up apache2 (2.2.11-2ubuntu2.7) ...
Setting up apache2-doc (2.2.11-2ubuntu2.7) ...
 * Reloading web server config apache2                                                                                                                      apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                                                                                                                     [ OK ]

Setting up libapache2-mod-auth-mysql (4.3.9-11) ...
Setting up libapache2-mod-php5 (5.2.6.dfsg.1-3ubuntu4.6) ...

เสร็จแล้วอย่าลืม Add lines นี้ลงไปที่ไฟล์บรรทัดท้ายสุด

พิมพ์ sudo nano /etc/apache2/apache2.conf

LoadModule php5_module  modules/libphp5.so
AddHandler php5-script php

แล้ว Save โดยกด Ctrl+O ,แล้วกด Enter ออกจากโปรแกรมโดยกด Ctrl+X

restart service โดย /etc/init.d/apache2 restart

ขอขอบคุณที่มาจาก
http://dan.drydog.com/apache2php.html

http://dancingpenguinsoflight.com/2009/02/how-to-completely-reset-an-apache-instance-in-ubuntu/