2009-04-09

ติดตั้ง PHP 5 + IIS5 + ISAPI บน WindowsXP

พอดีกำลังจะทดลองเขียน script ทำงานบนวินโดว์โดยใช้ PHP ครั้นจะลง Apache งาน .NET ที่อยากจะทดลอง

ทำก็มีให้ต้องเปลี่ยนพอร์ทอีก เลยตัดสินใจเอา PHP มาลงโดยใช้ เป็นรูปแบบเป็น ISAPI เพื่อที่สามารถใช้งานได้ทั้งสอง

ระบบคือ PHP กับ .NET โดยไม่ต้องเปลี่ยน HTTP Server กว่าจะทำได้เกือบทั้งวัน เพราะมันไม่ยอมทำงานไม่ว่า

จะลองดาวน์โหลดเป็น MSI มาติดตั้ง หรือ ติดตั้งเป็นแบบ zip ไฟล์ นี่ก็เพิ่งรันได้ ก็เลยเขียน ขึ้น blog เลยดีกว่า เผื่อใคร

ทำดูแล้วติดปัญหา ก็จะได้ประหยัดเวลาไป



ปัญหาที่เกิดคือ HTTP 500 Internal server Error แต่ไม่มี error ใน log file ให้ debug เลย



ดาวน์โหลดไฟล์





ไปดาวน์โหลด php มาได้จาก php zip version extract ไฟล์ออกมาไว้ที่ c:\php



ไปดาวน์โหลด extension เพิ่มเติม ( pecl ) ไม่งั้นจะ error ว่าหา dll ไฟล์ไม่พบเพราะเนื่องจากตัว extension

หลายต่อหลายตัวต้องการ extension อื่นเข้าร่วมเพื่อประกอบการทำงานด้วย โหลดได้ที่นี่ครับ http://th.php.net/get/pecl-5.2.4-Win32.zip/from/a/mirror

extract ไปไว้ที่ c:\php\extras









Edit php configuration





rename file php.ini-recommanded ให้เป็น php.ini โดยก่อนทำก็แบ็คอัพไฟล์ต้นฉบับทั้งสองไฟล์ไว้ก่อน

กันเหนียว เผื่อมีอะไรผิดพลาดก็แก้ใหม่ได้ แล้วใช้ ก็อปปี้ extension list ตามนี้ไปใส่ใน ไฟล์ php.ini โดยไฟล์ราย

ละเอียดต้นฉบับผมเอามาจาก http://www.peterguy.com/php/install_IIS6.html พร้อมทั้งปรับแต่ง คอมเม้นท์

เพิ่มอีกหลายรายการเหมือนกัน เพราะเกิด error ซึ่ง error พวกนั้นผมยังไม่จำเป็นต้องใช้ ท่านใดต้องการคงต้องมีการติดตั้ง

กันเองทีหลัง



**php.ini ที่แก้ไขแล้ว



-----------------------------



extension=php_adt.dll

extension=php_amf.dll

;extension=php_apc.dll ; Alternative PHP Cache (http://pecl.php.net/package/APC) - significantly increases CPU load

extension=php_apd.dll

extension=php_bcompiler.dll

extension=php_bitset.dll

;extension=php_blenc.dll ; if enabled, test page is blank. Transparent PHP Script Encryption using Blowfish (http://pecl.php.net/package/BLENC)

extension=php_bz2.dll

extension=php_bz2_filter.dll

extension=php_classkit.dll

extension=php_cpdf.dll

extension=php_crack.dll

extension=php_curl.dll

extension=php_cvsclient.dll

;extension=php_db.dll - deprecated. Use php_dba.dll instead.

extension=php_dba.dll

extension=php_dbase.dll

extension=php_dbx.dll

extension=php_dio.dll

extension=php_docblock.dll

;extension=php_domxml.dll ; threw a bunch of "PHP Notice: Constant XML_... already defined ..." errors.

extension=php_event.dll

extension=php_mbstring.dll ; mbstring must be defined before exif.

extension=php_exif.dll

extension=php_fdf.dll

extension=php_fileinfo.dll

extension=php_filepro.dll

extension=php_fribidi.dll

extension=php_gd2.dll ; gif draw - http://www.boutell.com/gd

extension=php_gettext.dll

extension=php_gmp.dll

extension=php_gopher.dll

extension=php_haru.dll

extension=php_htscanner.dll

extension=php_http.dll

extension=php_hyperwave.dll

;extension=php_ibm_db2.dll ; IBM DB2 database

extension=php_id3.dll

;extension=php_ifx.dll ; Informix database.

;extension=php_iisfunc.dll ; Enable IIS and service management via PHP (http://kromann.info/article.php?Id=11062861865960000) - significantly increases CPU load

extension=php_imagick.dll ; ImageMagick (http://pecl.php.net/package/imagick).

extension=php_imap.dll

;extension=php_ingres.dll ; Ingres database - complains about missing iilibapi.dll

extension=php_interbase.dll

extension=php_java.dll

extension=php_ldap.dll

extension=php_lzf.dll

extension=php_mailparse.dll ; requires php_mbstring.dll

;extension=php_maxdb.dll ; requires MySQL maxDB (www.mysql.com/maxdb)

extension=php_mcrypt.dll ; requires the mcrypt library (libmcrypt.dll - http://mcrypt.sourceforge.net/, http://files.edin.dk/php/win32/mcrypt/, ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/old/win32/)

extension=php_mcrypt_filter.dll

;extension=php_mcve.dll

extension=php_memcache.dll

extension=php_mhash.dll

extension=php_mime_magic.dll

extension=php_ming.dll

extension=php_msql.dll

extension=php_mssql.dll

extension=php_mysql.dll

extension=php_mysqli.dll

;extension=php_netools.dll ; requires lcrzo.dll (http://www.icewalkers.com/Linux/Software/516050/lcrzo.html)? Appears to be a very fragile project. PECL extension page: http://pecl.php.net/package/netools

extension=php_ntuser.dll

;extension=php_oci8.dll ; OCI for ORacle databases

extension=php_oggvorbis.dll

extension=php_openssl.dll

extension=php_operator.dll

;extension=php_oracle.dll ; Oracle database

extension=php_parsekit.dll

extension=php_pdf.dll

extension=php_pdo.dll

extension=php_pdo_firebird.dll ; requires php_pdo.dll

;extension=php_pdo_ibm.dll

;extension=php_pdo_informix.dll ; more Informix ; requires php_pdo.dll

extension=php_pdo_mssql.dll ; requires php_pdo.dll

extension=php_pdo_mysql.dll ; requires php_pdo.dll

;extension=php_pdo_oci.dll ; more OCI ; requires php_pdo.dll

;extension=php_pdo_oci8.dll ; yet more OCI ; requires php_pdo.dll

extension=php_pdo_odbc.dll ; requires php_pdo.dll

extension=php_pdo_pgsql.dll ; requires php_pdo.dll

;extension=php_pdo_sqlite.dll ; requires php_pdo.dll

;extension=php_pdo_sqlite_external.dll

extension=php_pgsql.dll

;extension=php_phar.dll

extension=php_phpdoc.dll

extension=php_pop3.dll

;extension=php_printer.dll ; significantly increases CPU load

;extension=php_pspell.dll ; ASpell - http://www.aspell.net/win32

extension=php_radius.dll

;extension=php_rar.dll

extension=php_runkit.dll

;extension=php_sam.dll

extension=php_sdo.dll

extension=php_shmop.dll

extension=php_smtp.dll

;extension=php_snmp.dll ; Throws a bunch of "Cannot find module" errors.

extension=php_soap.dll

extension=php_sockets.dll

extension=php_spl_types.dll

extension=php_sqlite.dll ; requires php_pdo.dll

extension=php_ssh2.dll

extension=php_stats.dll

extension=php_stem.dll

;extension=php_svn.dll ; requires intl3_svn.dll (Subversion Revision control system - http://pecl.php.net/package/svn)

extension=php_swish.dll

;extension=php_sybase_ct.dll ; sybase database

;extension=php_threads.dll ; significantly increases CPU load

;extension=php_tidy.dll ; significantly increases CPU load

extension=php_timezonedb.dll

extension=php_translit.dll

extension=php_uploadprogress.dll

extension=php_win32ps.dll

extension=php_win32scheduler.dll

extension=php_win32service.dll

extension=php_win32std.dll

extension=php_xmlrpc.dll

extension=php_xsl.dll

extension=php_zip.dll

extension=php_zlib_filter.dll



------------------ End



( ใน howto พูดถึงเรื่องการ ปรับแต่งค่าสถานที่เก็บ session file หากไม่ต้องการก็ข้ามไปได้เลย )



ปรับแต่งค่าเพิ่ม โดยเอา คอมเม้นท์ บรรทัดที่เขียนว่า



cgi.force_redirect แล้ว set ค่าให้เท่ากับ 0 ( ของเดิมเป็น 1 )



เรียบร้อยแล้วก็ทำการ save เลย









เพิ่มค่าใน registry file





สร้าง text file ขึ้นมาไฟล์หนึ่งจากนั้นก้อปปี้ค่าข้างล่างใส่ แล้วก็ save ซะ ตั้งชื่อเป็นอะไรก็ได้ ( สำหรับผมทำนะ แต่

ใน howto เขาตั้งชื่อเป็นทางการหน่อยคือ inifilepath.reg



Windows Registry Editor Version 5.00



[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]

"IniFilePath"="C:\\PHP"



save แล้วก็ double click เพื่อเป็นการ install จบ











ติดตั้ง ISAPI สำหรับ IIS ทำตาม link นี้เลยครับ







http://www.phplivesupport.com/documentation/viewarticle.php?aid=76&pid=8



เป็นอันเรียบร้อย เหตุที่ผมใช้เป็นแบบ zip ไฟล์เนื่องจากปัญหาน้อยกว่า และ ติดตั้งง่ายกว่า msi package อ้อ ถ้าท่าน

เผลอไปติดตั้งเป็นแบบ msi แต่ใช้งานไม่ได้ เปลี่ยนมาติดตั้งเป็นแบบ zip ไฟล์ก็ไม่หาย ให้เปิด registry หาคีย์ที่เขียน

ว่า php5isapi.dll ว่ามันอ้างอิงค่า ถูกต้องหรือเปล่า เช่นของผมมันเป็น php5is~1.dll ก็เขียนแก้ไขใหม่ซะ



**ปัญหา HTTP 500 Internal Server Error ในตอนการติดตั้งเป็นแบบ ISAPI หลังจากการติดตั้งแล้ว ส่วน

มากเกิดจากการกำหนดค่า ISAPI มีความผิดพลาด ให้ตรวจค่าใน registry ว่ามีการเขียนค่าถูกต้องหรือไม่ โดยค้น

จากคีย์เวิร์ด php5isapi.dll ( registry missing config for ISAPI by MSI )ตามที่บอก






อ้างอิง Howto ( thx :-)~ )



PHP5+IIS6 Install Howto





http://www.peterguy.com/php/install_IIS6.html



PHP5+ISAPI+IIS5 on WindowsXP Howto





http://www.phplivesupport.com/documentation/viewarticle.php?aid=76&pid=8



Another idea





http://www.faqts.com/knowledge_base/view.phtml/aid/44904/fid/1655


No comments: