แก้ปัญหา PHP MySQL IIS7 ด้วย Windows Vista
หน้าแรก ASP net MS SQL แก้ปัญหา PHP MySQL IIS7 ด้วย Windows Vista
![]() | หลังจากที่เคยทดสอบ PHP, MySQL บน Windows XP มานานพอสมควร พออัพเกรดเวอร์ชั่นของ PHP, MySQL เป็นเวอร์ชั่นที่สูงขึ้นก็ต้องใช้วิธีการอีกแบบหนึ่งที่ได้แนะนำไปแล้ว คราวนี้พอเปลี่ยนเวอร์ชั่นของวินโดว์จาก XP มาเป็นดาวรุ่งดวงใหม่ Windows Vista Enterprise ก็เจอปัญหาอีกแล้ว เป็นปัญหาของการเปลี่ยนเวอร์ชั่นใหม่ของ IIS เป็นรุ่นที่ 7 และความไม่คุ้นเคยจากหน้าตาที่เปลี่ยนไปเลยงงหนักเข้าไปอีก |
ทุกปัญหาต้องเจอทางออก ถ้าคิดนอกกรอบ ใจเย็น รอบคอบ ทดลองแล้วใช้ได้เลย ตัวอย่าง นี้ทดลองบนวินโดว์วิสต้าเวอร์ชั่นสูงสุดสำหรับใช้ส่วนบุคคลในองค์กรคือ Enterprise และเหมือนเดิมคือต้องไปดาวน์โหลด PHP เวอร์ชั่นล่าสุดที่เป็นไฟล์ซิป (ไม่ใช่ตัวติดตั้ง Installer ในตัวอย่างผมใช้ไฟล์ php-5.1.6-Win32.zip และ pecl-5.1.6-Win32.zip สำหรับ Extension) เพื่อนำมาติดตั้งเองด้วยมือแบบ manual จากเว็บไซต์ www.php.net

ได้มาแล้วก็คลายไฟล์ทั้งหมดลงในไดรว์ซี แก้ไขชื่อโฟลเดอร์ให้สั้นจำง่ายเป็น C:inetpubphp เพื่อทำการติดตั้งต่อไปตามขั้นตอนต่อไปนี้ครับ
- สร้าง โฟลเดอร์ชื่อ uploadtmp และ sessiontmp ไว้ภายในโฟลเดอร์ C:inetpubphp และกำหนดสิทธิให้กับ Everyone สามารถจัดการได้แบบ Full control
- จัดการก็อบปี้ไฟล์ php.ini-dist ไปไว้ในโฟลเดอร์ C:windows และเปลี่ยนชื่อใหม่เป็น php.ini แล้วทำการแก้ไขไฟล์ดังนี้
บรรทัด
;output_buffering = Off
แก้เป็น
output_buffering = 4096
บรรทัด
register_globals = Off
แก้ไขเป็น
register_globals = On
บรรทัด
;doc_root =
แก้ไขเป็น
doc_root =
บรรทัด
extension_dir = "./"
แก้ไขเป็น
extension_dir = "C:InetpubPHPext"
บรรทัด
; cgi.force_redirect = 1
แก้ไขเป็น
cgi.force_redirect = 0
บรรทัด
upload_tmp_dir =
แก้ไขเป็น
upload_tmp_dir = C:InetpubPHPuploadtmp
บรรทัดตรง extension เลือกเอาเครื่องหมาย ( ; ) ที่อยู่ข้างหน้าออก ตามที่ต้องการใช้ ส่วนใหญ่ก็สามตัวนี้
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dll
บรรทัด
;sendmail_from = me@example.com
แก้ไขเป็น
sendmail_from = me@localhost.com
บรรทัด
;session.save_path = "/tmp"
แก้ไขเป็น
session.save_path = "C:InetpubPHPsessiontmp"
จากนั้นก็จัดการเซฟไฟล์นี้ (ถ้าเซฟไม่ได้ต้องเข้าไปกำหนดใน properties ของไฟล์ให้สิทธิ Everyone สามารถเขียนได้นะครับ) - ขั้น ตอนต่อไปคือการกำหนดให้ IIS7 รู้จักภาษา PHP และทำงานได้ถูกต้อง เริ่มต้นด้วยการเปิด IIS7 ขึ้นมาก่อน ผ่านทาง Administrative tools > Internet Information Services (IIS) Manager ดังภาพ (เริ่มงง เพราะหน้าตาเปี๋ยนไป มันต่างจาก IIS5 - 6 อย่างสิ้นเชิง)

- มีหัวข้อที่ต้องจัดการเรียงลำดับคือ ISAPI filters, ISAPI and CGI Restriction, Default Document, Handler Mappings เริ่มต้นที่ ISAPI filters ดับเบิ้ลคลิกเลือก Add จะพบกรอบด้านล่าง ใส่ชื่อ Filter name: เป็น PHP และ Excutable: คลิกปุ่มบราวซ์เพื่อเลือกไฟล์ C:inetpubphpphp5isapi.dll

- ISAPI and CGI Restriction ดับเบิ้ลคลิกเลือก Add จะพบกรอบด้านล่าง ให้กำหนด ISAPI and CGI path: คลิกปุ่มบราวซ์เพื่อเลือกไฟล์ C:inetpubphpphp5isapi.dll Description: PHP อย่าลืมคลิกเลือก Allow extension.. แล้วคลิกปุ่ม OK

- ในหัวข้อนี้ ISAPI and CGI Restriction ให้คลิกเลือก Edit Feature Settings... เพื่อกำหนดการทำงานของสคริปต์ดังภาพ คลิก OK

- ที่หัวข้อ Handler Mappings ดับเบิ้ลคลิกเลือก Add Script map จะพบกรอบด้านล่าง ใส่ชื่อ Request path: เป็น *.php และ Excutable: คลิกปุ่มบราวซ์เพื่อเลือกไฟล์ C:inetpubphpphp5isapi.dll อีกครั้งและใส่ Name เป็น PHP คลิกปุ่ม OK

- จะมีกรอบถามยืนยันว่าจะให้ สิทธิในการทำงานของสคริปต์ ISAPI extension หรือไม่ ให้คลิก Yes เพื่อให้ระบบอนุญาตการทำงาน (Allowed)

- หัวข้อ Default Document ใช้เพื่อกำหนดชื่อไฟล์แรกในการเรียกเว็บไซต์ ในที่นี้ให้เพิ่ม index.php เข้าไปแล้วคลิกที่ Apply ด้านขวามือ

- เป็นอันเสร็จสิ้นการปรับแต่ง IIS ให้ปิด IIS Manager ไปและไปที่ My Computer เลือก Properties > Advanced System Setting > Environment variables

- Environment variables ให้คลิกที่ Path เลือก Edit แล้วเติมพาธของ PHP ต่อท้ายลงไปคือ C:inetpubphp; ดังภาพ คลิก OK > OK แล้วปิดหน้านี้ไป รีสตาร์ทเครื่องสักครั้งหนึ่ง

- เขียนไฟล์ php เพื่อทดสอบการติดตั้ง โดยใช้ Notepad เขียนดังตัวอย่าง
จัดเก็บไฟล์ในชื่อ phpinfo.php เรียกผ่านบราวเซอร์ด้วยการพิมพ์ http://localhost/phpinfo.php ถ้าแสดงผลดังภาพข้างล่างก็แสดงความยินดีด้วย คุณติดตั้ง PHP ได้สำเร็จ

คราวนี้ก็มาถึงการติดตั้ง MySQL บนระบบปฏิบัติการ Windows Vista Enterprise เพื่อเป็นการเสริมทัพให้กับ PHP ในการติดต่อกับฐานข้อมูล เหมื่อนกับ PHP คือเราจะไปดาวน์โหลดไฟล์ชนิดติดตั้งเอง (ตัวอย่างนี้ผมใช้ mysql-noinstall-5.0.26-win32.zip) ซึ่งวิธีการติดตั้งก็ไม่ยากคล้ายกับการติดตั้งบน WindowsXP มีปลีกย่อยข้อแตกต่างนิดหน่อยดังนี้
- คลายไฟล์ที่ดาวน์โหลดออกมา เอาเฉพาะโฟลเดอร์ mysql-5.0.26-win32 ไปไว้ที่ไดรว์ C: เปลี่ยนชื่อให้เป็น C:mysql
- จัดการก็อบปี้ไฟล์ my-large.ini ไปไว้ใน C:windows แล้วเปลี่ยนชื่อเป็น my.ini จากนั้นทำการแก้ไขดังนี้
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
default-character-set = tis620
socket = C:/MySQL/tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
default-character-set = tis620
socket = C:/MySQL/tmp/mysql.sock
basedir = C:/MySQL/
datadir = C:/MySQL/data/
skip-locking
แก้และเพิ่มเติมเฉพาะบรรทัดสีแดง ทำการจัดเก็บและปิดไฟล์ - ขั้นต่อไปนี้สำคัญมากครับ เปิดบราวเซอร์เพื่อไปยังโฟลเดอร์ C:mysqlbin คลิกเมาส์ขวาเลือกที่ไฟล์ mysqld-max-nt.exe เลือกหัวข้อ Run as administrator จะมีกรอบถามยืนยันให้คลิกที่กรอบ Allow เพื่อยืนยัน

- ไป ที่เมนู Start > Start Search > cmd กด Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อเข้าทำงานในโหมดดอสคอมมานด์ของผู้ดูแลระบบ ทำการติดตั้ง MySQL เป็น Service หนึ่งของระบบ ด้วยการพิมพ์คำสั่ง (ที่เป็นสีแดง) ดังนี้
C:Usermontree> cd พิมพ์ cd กด Enter เพื่ออกไปที่ C:>
C:> cd mysqlbin พิมพ์เพื่อเข้าไปในโฟลเดอร์ C:mysqlbin>
C:mysqlbin> mysqld-max-nt --install เพื่อติดตั้ง mysql เป็น Service - ไป ที่ Administrative tools > Services จะเห็นว่ามี MySQL เป็นเซอร์วิสหนึ่งแต่ยัง Stop อยู่ ไม่ต้องกังวลใจในตอนนี้ครับ แล้วอย่าลืมไปกำหนดพาธการทำงานของ MySQL ที่ My Computer > Properties > Advanced System Setting > Environment variables เพิ่มพาธ C:mysql; เข้าไปต่อท้ายจากพาธของ php
- ก่อนการทดสอบว่าใช้งานได้หรือไม่ ให้รีสตาร์ทเครื่องอีกสักรอบก่อนครับ
- ไปที่ Administrative tools > Services อีกที จะเห็นว่ามี MySQL เป็นเซอร์วิสหนึ่งที่ทำงานแบบ Automatic และ Start แล้ว
- ลองทำการเชื่อมต่อฐานข้อมูลด้วย phpMyAdmin ดูได้เลยครับ พร้อมทั้งกำหนดรหัสผ่านสำหรับ root ด้วย และสร้างฐานข้อมูลต่อไป
มี เพื่อนๆ หลายคนถามมาว่า ใน phpMyAdmin อยากจะกำหนดให้แต่ละคนล็อกอิน และจัดการฐานข้อมูลของตนเอง เห็นเฉพาะฐานข้อมูลของตนเอง เหมือนที่ผู้ให้บริการเซิร์ฟเวอร์เขาทำกัน จะทำอย่างไร? ไม่ยากครับให้คุณแก้ค่า Config ของ phpMyAdmin ตามตัวอย่าง

บันทึกไฟล์ เมื่อเข้าสู่หน้าล็อกอินของ phpMyAdmin ก็จะเป็นดังภาพข้างล่างนี้

เมื่อสร้างผู้ใช้งาน รหัสผ่าน และฐานข้อมูลให้แต่ละคนแล้ว ก็จะสามารถเข้าไปทำงานได้เฉพาะฐานข้อมูลของตนดังภาพข้างล่างนี้

คงจะเป็นประโยชน์กับเพื่อนครูเราบ้างนะครับ นี่ก็ลองติดตั้งเพราะอยากลองของใหม่เลยต้องนั่งงมหาวิธีการติดตั้งอยู่หลายวันครับ ลองสารพัดรูปแบบด้วยความที่ติดใจ Windows Vista มันสวยทำงานได้เร็วก็เลยต้องหาวิธีการทำงานเพิ่มเติมให้ได้ ไม่งั้นแย่แน่ๆ เลย เพราะเครื่องโน้ตบุ๊คเครื่องนี้มีงานทั้งงานราษฎร์งานหลวงเพียบ แถมยังใช้ทั้ง ASP, PHP มันเลยยุ่งอย่างนี้แหละ
ขึ้นไปด้านบน

