How to Compile suPHP+Apache2+PHP

คัดลอกจาก http://planetmy.com/blog/?p=67

Finally I’m manage to make my PHP 5.1.2 compiled with suPHP successful today suPHP is a tool for executing PHP scripts with the permissions of their owners. It consists of an Apache module (mod_suphp) and a setuid root binary (suphp) that is called by the Apache module to change the uid of the process executing the PHP interpreter.

I just would like to share about “How’s To Compile PHP + suPHP + Apache” as below:

Continue reading How to Compile suPHP+Apache2+PHP

Creating Web Services With PHP

วันนี้ค้นหาวิธีการสร้าง Web Services โดย PHP ขอ bookmark รวมลิ้งค์ไว้ตรงนี้ก่อน

http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html?page=1
http://talks.php.net/index.php/Web+Services
XML and PHP. Part 1: Using The WDDX Functions
PHP and Web Distributed Data eXchange (WDDX)
http://talks.php.net/show/oscon-webservices/1
Transforming XML with PHP
PHP to XML:

http://www.ibiblio.org/xml/slides/sd2000west/xmlandjava/208.html
Hands On: Inside the Tricky PHP-to-XML Project
WDDX:
Web Distributed Data Exchange, or WDDX, is a free, open XML-based technology that allows Web applications created with any platform to easily exchange data with one another over the Web

Basic specs to know
• XML: http://www.w3.org/XML
• XML Namespaces: http://www.w3.org/TR/REC-xml-names
• XML Schemas: http://www.w3.org/XML/Schema
• WDDX: http://www.openwddx.org/
• REST: http://internet.conveyor.com/RESTwiki/moin.cgi/FrontPage
• XML-RPC: http://www.xmlrpc.com/
• SOAP: http://www.w3.org/TR/soap
• WSDL: http://www.w3.org/TR/wsdl
• Web Services Activity: http://www.w3.org/2002/ws/
Transfer XML with PHP: http://www.xml.com/pub/a/2003/06/18/php-xml.html

เรื่องของ PEAR

PEAR ย่อมาจาก PHP Extension and Application Repository เป็นที่เก็บรวบรวม component ของ PHP ที่ใช้กันบ่อยๆ และมีประโยชน์ ซึ่งผมได้นำมาลองใช้งานแล้วก็ช่วยให้เขียนโปรแกรมได้สะดวกและรวดเร็วขึ้นมากๆ เลย คิดว่าคงจะหยิบขึ้นมาเขียนสักวัน

บทความแนะนำเกี่ยวกับ PEAR

Getting Started with PEAR – PHP’s Low Hanging Fruit
PEAR Website
ฟังก์ชันที่ผมใช้งานอยู่ในตอนนี้

Date()
ใช้หาวันและเวลาปัจจุบันในรูปแบบต่างๆ
$date->getDate( $format_constant = DATE_FORMAT_ISO )
(รายละเอียดการใช้งาน http://www.modem-help.co.uk/help/diary20040326.html)

Text_Password()
ใช้สำหรับสร้าง password ขึ้นมาในรูปแบบต่างๆ
http://pear.php.net/manual/en/package.text.text-password.php

Custom Error Pages with PHP and Apache

Using PHP and Apache, you can turn your “Page Not Found” messages into more than bland error reports. You can serve an alternate page based on the name of the page that was not found, create a page on the fly from a database, or send an email about the missing page to a webmaster.

จะดีแค่ไหนถ้าเราสามารถเปลี่ยนข้อความ “Page Not Found” ที่ปรากฎเวลาคนเรียกดูไฟล์เว็บที่ไม่มีอยู่จริงให้เป็นอย่างอื่น?

PHP5 กับ MySQL bug?

หลังจากที่ผมได้ทำการติดตั้ง Apache 2.0.50 กับ PHP5 ไปแล้ว ทุกอย่างก็เหมือนจะทำงานได้ดีจนกระทั่ง ผมจะเพิ่ม extension ของ php_mysql.dll เพื่อให้ PHP สามารถติดต่อกับ MySQL ได้ ปรากฎว่าทำยังไงก็ไม่สามารถเพิ่ม mysql extension ได้ และจะเกิดข้อความ error แบบตัวอย่างข้างล่างนี้แหละ ซึ่งทำให้งง เพราะไฟล์มันก็อยู่ถูกที่แล้ว ลองกี่ทีๆ ก็เหมือนกัน

ข้อความเขียนไว้ว่า
PHP Startup: Unable to load dynamic library ‘d:program filesphpextphp_mysql.dll’ – The specified module could not be found.

เลยลองเข้าไปหาดูในเว็บ พบว่ามีคนโวยวายไว้ที่นี่เหมือนกัน http://bugs.php.net/bug.php?id=29224

ผมลองทำตามที่เขาเขียนไว้ แต่ก็ไม่ได้ผล ก็เลยลองใหม่ สิ่งที่ผมทำก็คือ
1. แก้ไข php.ini ให้เรียก module mysql ด้วยคำสั่ง
extension=php_mysql.dll

2. copy ไฟล์ libmysql.dll ไปไว้ที่ d:/windows/system32/

3. อย่าลืม restart Apache Web Server ใหม่

ปรากฎว่าคราวนี้ได้ผลแฮะ!

แล้วผมก็เจอคำตอบที่ FAQ ของ PHP ที่นี่ เจ้าตัว MySQL client libaries ไม่ได้ถูก bundle มากับ PHP5 นี่เอง นอกจากนี้ยังแนะนำให้ใช้ MySQLi แทนด้วย เพราะเนื่องจากว่าเจ้า MySQL extension ตัวที่มากับ PHP5 นั้นไม่ได้สนับสนุนฟังก์ชันต่างๆ ของ MySQL ในเวอร์ชันที่มากกว่า 4.1.0 ด้วย

งั้นผมลองเปลี่ยนมาใช้ MySQLi ดีกว่า วิธีการก็คือ
1. comment MySQL ซะ ด้วยการเติม ; ไปข้างหน้า
;extension=php_mysql.dll

2. เรียก module MySQLi ด้วยการเพิ่มคำสั่ง
extension=php_mysqli.dll

3. copy ไฟล์ libmysqli.dll ไปไว้ที่ d:/windows/system32/

4. อย่าลืม restart Apache Web Server ใหม่