หน้าเว็บ

วันจันทร์ที่ 2 มีนาคม พ.ศ. 2552

ปัญหา run php บน command line ไม่ได้

อาการคือ run php บน apache server บน localhost ได้เป็นปกติ
แต่พอจะลอง run php เฉยๆบน cmd (command line) ปรากฎมันขึ้น pop-up
php.exe - Unable to Locate Component
This application has failed to start because php_mbstring.dll was not found. Re-installing the application may fix this problem.

แล้วในจอ cmd ขึ้นว่า
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\AppServ\php5\ext\php_exif.dll' - The specified module could not be found.
in Unknow on line 0

บ่อเกิดของปัญหา คิดว่ามี 2 แบบ โดยให้ดูในไฟล์ php.ini
1. extension_dir กำหนดชี้ไปผิดที่หา dll ไม่เจอ (dll เก็บอยูุ่ในโฟลเดอร์ ext ของ php5 ที่เราลงไว้)
2. extension=php_mbstring.dll นั้นประกาศไว้หลัง extension=php_exif.dll

วิธีแก้
ซึ่งกรณีของผมเป็นกรณีที่สอง เนื่องจากว่า php_exif.dll นั้นต้องมีการเรียกใช้ php_mbstring.dll ก่อน ดังนั้นให้ย้าย ขึ้นมาไว้บรรทัดก่อน php_exif.dll
แต่ถ้าเป็นกรณีที่หนึ่งก็ให้แก้ extension_dir ชี้ไปให้ถูกที่แทน

เมื่อทำดังนั้นก็สามารถใช้งานได้เลย (ส่วนสาเหตุว่าทำไม run บน apache localhost แล้วผ่านนี่ไม่แน่ใจ แต่เดาว่า apache อาจจะมีกระบวนการในการ resolve ปัญหานี้โดยเว้นไปโหลดอันอื่นก่อนแล้วค่อยกลับมาโหลดตัวที่ค้างอยู่ทีหลัง)

ระบบที่ทดสอบ
OS: Windows Vista SP1
PHP: ลงผ่าน AppServ 2.5.10

1 ความคิดเห็น:

fast7 กล่าวว่า...

Thanks, this is my best solution about mbstring error