ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2005-08-05

PHP 5 + MySQL settings on Windows

ปวดหัวนิดหน่อย นั่งเซตให้ PHP 5 ใช้ MySQL ได้

ปัญหามันเริ่มมาจาก PHP 5 เค้าไม่ได้รวมฟังก์ชั่น MySQL เอาไว้ในตัว แต่แยกเป็นโมดูลต่างหาก แล้วก็ไม่ได้เปิดไว้เป็น default ก็เลยต้องเซตเจ้า php.ini กันหน่อย

ทีนี้ เหมือนไอ้ php.ini มันก็ต๊อง ๆ คือทำอะไรไม่ค่อยเหมือนที่คิดเท่าไหร่ มีคนบ่นกันเยอะ

หลังจากมั่ว ๆ อยู่พักนึง (เคยลองแล้วเมื่อหลายวันก่อนกับ Apache 2.0 แต่ไม่สำเร็จ วันนี้ลองใหม่กับ IIS ที่มากับ Win XP) ก็ได้ความ

ก่อนอื่นต้องไปดาวน์โหลด zip package ของ Windows มาลงก่อน. เน้นว่า zip package เพราะตัว installer ไม่มีโมดูล MySQL ให้นะ (หรือถ้าอยากลงง่าย ๆ ก็เอาตัว installer มาลงก่อน แล้วก็อปไฟล์จาก zip package ทับ ก็เร็วดี ได้เหมือนกัน)

จากนั้นก็ไปเซตไฟล์ php.ini, ปกติมันจะอยู่ใน C:\Windows

; โฟลเดอร์ที่เก็บไฟล์เว็บ, ถ้าใช้ IIS ไม่ต้องเซต ปล่อยว่างเลย

doc_root = "D:\home\shared\wwwroot" 

; โฟลเดอร์ที่เก็บโมดูลเสริม  ของเดิมมันจะเป็น "./"

extension_dir = "ext/"

; เอาคอมเมนต์ (;) ที่อยู่ข้างหน้าโมดูลด้านล่างพวกนี้ออก

; multi-byte string, ถ้าใช้ phpMyAdmin มันจะเตือน ถ้าไม่ยอมเปิดตัวนี้

extension=php_mbstring.dll 

; MySQL

extension=php_mysql.dll

จะเห็นว่า มีการใช้ทั้ง / และ \ สำหรับ path, แถมเจ้า extension_dir ที่เซตมาให้ ก็ไม่ตรงกับเลย์เอาต์จริง ๆ ในแพ็คเกจ -_-"

แถมนิด เซตเจ้านี่ด้วยก็ดี include_path โดยเฉพาะถ้าคิดจะใช้ PEAR

include_path = ".;c:\dev\php\PEAR"

ถ้าปล่อยว่างไว้ ค่าปริยายมันจะเป็น ".;C:\php5\pear" ... แต่ค่าปริยายของตัว installer เวลาติดตั้ง PHP มันจะลงที่ C:\php นะ ... ก๊า~ -_-"

สำหรับ phpMyAdmin ถ้าเปิดแล้วมีปัญหา ฟ้องว่า Access denied. #2003 - The server is not responding ทำนองนี้ ให้เปิดไฟล์ config.ini.php ของ phpMyAdmin ขึ้นมาแก้:

$cfg['Servers'][$i]['host'] = '.'; // MySQL hostname or IP address

ค่าเดิม ปกติมันจะเป็น 'localhost' แต่ผมใช้ไม่เคยได้เลย '127.0.0.1' ก็ไม่ได้ แต่ใช้ '.' แล้วได้แฮะ

อีกค่าที่ต้องแก้ตาม ไม่งั้น phpMyAdmin มันจะเตือนอีก ก็คือ

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';

ของเดิมมันจะว่าง ๆ โดย phpMyAdmin จะพยายามหาให้เอง แต่ไม่เวิร์กน่ะ ก็บอกมันไปหน่อย

ทั้งหมดที่ว่ามา เป็นการเซต PHP 5, MySQL, phpMyAdmin บน Windows XP สำหรับงานพัฒนาในเครื่องเดียวกันเท่านั้น ยังไม่เคยลองเซตให้มันเชื่อมไปเครื่องรีโมต อาจจะไม่เวิร์กก็ได้

ปัญหาอย่างนึงที่พบ ตอนที่ลองกับ Apache 2.0 คือ ถ้าเกิดเปลี่ยน extension_dir จากเดิม "./" ไปเป็นอย่างอื่นเนี่ย เจ้า PHP ก็จะหาพวกโมดูลที่อยู่ในโฟลเดอร์เดียวกะตัวมันเอง (.) ไม่เจอ -_-" แต่ IIS ไม่มีปัญหานี้แฮะ ก็งง ๆ ทั้ง ๆ ที่ใช้ตัว php-cgi.exe ตัวเดียวกันเลย

6 comments:

samphan said...

ลำบากนัก ใช้ ก็สะดวกดีนะ

lulu said...

search path ของ unix มันไม่รวม . ให้ ต้องใส่เอง แต่ของ windows มันรวมให้อัตโนมัติ?

bact' said...

ที่ว่าลองกับ Apache 2.0 นี่ ก็เป็น Apache บน Windows ครับ

bact' said...

ไม่รู้ว่าเกี่ยวกะรันแบบ service กะรันแบบธรรมดา (ที่มันขึ้น terminal มาด้วยเวลารัน) รึเปล่า

ยังไม่ได้ลองรัน Apache เป็น service

metropoly said...

เพิ่งจะปล้ำกะมันเสร็จเมื่อคืนฮะ

รู้งี้โหลด zip package มา set แต่แรก ก็จบไปละ

เฮ้อ!

ajink09 said...

ขอบคุณครับ
กำลังต้องการแบบนี้อยู่พอดี