Clicky

apache | suksit dot com

apache

Goodbye, Filebrowser

ปกติเวลาทำเว็บแล้วต้องการให้มี directory listing สำหรับให้ผู้ใช้ดาวน์โหลดไฟล์ โมดูลตัวแรกที่มักจะนึกถึงก็คือ Filebrowser ซึ่งถ้าติดตั้ง Drupal บนเซิร์ฟเวอร์ที่เป็นลินุกซ์ มันจะสามารถทำงานได้ตามปกติ แต่ปัญหาจะเกิดขึ้นทันทีเมื่อใช้เครื่องเซิร์ฟเวอร์ที่เป็นวินโดวส์

สาเหตุของปัญหาจริงๆ น่าจะเกิดจาก encoding ของระบบไฟล์ในวินโดวส์ที่มันไม่เป็น UTF-8 ทำให้มีปัญหาประหลาดๆ เมื่อใช้ฟังก์ชันของ PHP ในการอ่านชื่อไฟล์

ตัวอย่าง issue ที่น่าปวดหัวของ Filebrowser ก็มีประมาณนี้

Read the rest of this entry »

How to Move Drupal Installation to Another Host

แต่ก่อนมักจะรู้สึกว่า ย้ายโฮสต์ทีนี่มันเรื่องใหญ่มาก แต่คราวนี้รู้สึกง่ายๆ ดี เลยจดขั้นตอนไว้หน่อย อย่างแรกสุดคือเซ็ตเว็บให้เป็น Off-line mode (admin/settings/site-maintenance) โดยอาจจะใส่ message ให้รู้ว่าตอนนี้เรากำลังย้ายโฮสต์อยู่นะ อะไรทำนองนั้น โดยไม่จำเป็นต้อง disable โมดูลใดๆ จากนั้นก็แบ็กอัพข้อมูล โดยสิ่งที่ต้องแบ็กอัพคือ

  • ไดเร็กทอรี sites/
  • ไฟล์ .htaccess ใน root (ถ้ามีการแก้ไข)
  • ไฟล์ export ของฐานข้อมูล MySQL (ถ้า clear cache กับ access log ก่อน จะช่วยลดขนาดไฟล์ export ได้เยอะอยู่)
  • ไดเร็กทอรีอื่นๆ ที่ไม่ใช่ของ Drupal

Read the rest of this entry »

How to Setup Oracle Instant Client and PHP on XAMPP

เมื่อวานเพิ่งได้ลองใช้ Oracle Instant Client เพื่อให้ PHP ติดต่อกับฐานข้อมูลที่ทำงาน รู้สึกว่าใช้งานง่ายและสะดวกกว่าการลง Oracle client เต็มๆ เยอะ และวิธีการติดตั้งก็ไม่ยุ่งยากอะไร

  1. ดาวน์โหลด Oracle Instant Client เวอร์ชันที่ต้องการ จะได้ไฟล์ .zip มาไฟล์นึง (Oracle ผมเป็น 8.1.7 ต้องดาวน์โหลด OIC เวอร์ชัน 10.x มาใช้ เพราะลองเวอร์ชัน 11.x แล้วมันบอกว่าไม่ support)
  2. แตกไฟล์ที่ได้ ไว้ในโฟลเดอร์อะไรก็ได้ แนะนำว่าอย่าให้มี space ในชื่อพาธ ถ้าเอาแบบง่ายๆ ก็ C:\Oracle
  3. เพิ่ม/แก้ Environment variable ของวินโดวส์ โดยไปที่ My Computer » Properties » Advanced » Environment Variables

* แก้ตัวแปร PATH โดยเพิ่ม C:\Oracle เข้าไป * เพิ่มตัวแปร ORACLE_HOME ใส่ค่าเป็น C:\Oracle เช่นกัน 4. รีสตาร์ทวินโดวส์หนึ่งรอบ เพื่อความชัวร์ 5. เพิ่มการโหลด extension php_oci8.dll ใน PHP โดยแก้ไฟล์ php.ini (ถ้าเป็นใน XAMPP ไฟล์ php.ini จะอยู่ใน %XAMPP_DIR%\apache\bin) เอาเครื่องหมาย semicolon (;) ออกจากบรรทัดที่ต้องการ 6. รัน Apache ถ้าไม่มี error message อะไรก็เป็นอันเสร็จพิธี

Running Drupal Test Sites within XAMPP

มีคนโพสต์ถามปัญหาการติดตั้ง Drupal บน XAMPP (ไปตอบไว้แล้วในกระทู้) แต่คิดว่ามาโพสต์เก็บไว้ที่นี่ด้วยน่าจะดี

ปกติคนทำเว็บแต่ละคนคงมีวิธีการสร้าง test site ในเครื่องของตัวเองอยู่แล้ว สำหรับผมที่ใช้ XAMPP เป็นหลัก จะใช้วิธีการสร้าง virtual host สำหรับแต่ละ site ที่ทำงานอยู่ โดยมีขั้นตอนดังนี้

1. เพิ่ม virtual host ในไฟล์ %XAMPP_INSTALL_DIR%\apache\conf\extra\httpd-vhosts.conf โดยมี virtual host สำหรับหน้า admin ของ XAMPP 1 อัน ที่เหลือเป็นของแต่ละเว็บไซต์

<VirtualHost *:80>
    ServerAdmin admin@xampp.local
    DocumentRoot "C:/Program Files/XAMPP/htdocs"
    ServerName xampp.local
</VirtualHost>
 
<VirtualHost *:80>
    ServerAdmin admin@drupal.local
    DocumentRoot "D:/www/drupal-6.6"
    ServerName drupal.local
</VirtualHost>
  • virtual host อันแรก ชี้ไปที่ directory ที่ติดตั้ง XAMPP ซึ่งเรียกใช้ได้ทาง http://xampp.local
  • virtual host อันที่สอง ชี้ไปที่ directory ที่ติดตั้ง Drupal ซึ่งเรียกใช้ได้ทาง http://drupal.local
  • สามารถตั้ง URL เป็นอะไรก็ได้ โดยแก้ตรง ServerName

2. เพิ่ม <Directory> ในไฟล์ %XAMPP_INSTALL_DIR%\apache\conf\httpd.conf

<Directory "D:/www/drupal-6.6">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
  • ไม่ต้องเพิ่ม directory ของ XAMPP เพราะมันมีอยู่แล้วในไฟล์ httpd.conf

3. แก้ไฟล์ hosts เพื่อให้ Windows รู้จัก URL ของ virtual host ที่เรามั่วขึ้นมาเอง โดยเพิ่มข้อมูลในไฟล์ C:\WINDOWS\SYSTEM32\Drivers\etc\hosts ให้ URL ดังกล่าว ชี้มาที่ localhost (127.0.0.1)

127.0.0.1 localhost loopback xampp.local drupal.local

เสร็จเรียบร้อยก็รีสตาร์ท Apache แล้วลองเรียก URL ดังกล่าวได้เลย ผมชอบวิธีนี้เพราะแต่ละไซต์จะแยกกันอย่างเด็ดขาด, เรียกใช้งานได้สะดวก และน่าจะดูแลรักษาง่ายกว่าการรวมทุกอย่างไว้ใน directory htdocs ที่เดียว