Setting up PHP & MySQL on OS X Mavericks

With OS X 10.9 Mavericks, Apple chose to ship PHP 5.4.17. This is how to set it up from a clean install of Mavericks. Note: If you don’t want to use the built-in PHP or want to use version 5.5, then these are some alternatives: PHP 5.3/5.4/5.5 for OS X 10.6/10.7/10.8/10.9 as binary package by Liip … อ่านต่อ …

แก้ปัญหาข้อความเตือนเวลาเรียก php cli

หากเกิดข้อความเตือนเมื่อเรียกคำสั่ง php แบบ cli (Command line) เช่น $ /usr/bin/php –help PHP Warning: PHP Startup: memcache: Unable to initialize module Module compiled with module API=20050922, debug=0, thread-safety=0 PHP compiled with module API=20060613, debug=0, thread-safety=0 These options need to match in Unknown on line 0 … สามารถแก้ปัญหาโดยการใช้ option -n  ซึ่งหมายถึง php จะไม่ไปอ่านค่าต่างๆ ในไฟล์ php.ini   ตัวอย่างการใช้งานเช่น $ /usr/bin/php … อ่านต่อ …

Object Relational Mapper (ORM)

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in relational databases and object-oriented programming languages. From: http://en.wikipedia.org/wiki/Object-relational_mapping หากมีเวลาก็ทดลองใช้งาน ORM ต่างๆ ได้ DataMapper OverZealous Edition (DMZ) Doctrine (CodeIgniter and Doctrin Tutorial) RapidDataMapper

CodeIgniter – Session Bug within object storage

ผมใช้ CodeIginter แล้วเจอ error เกี่ยวกับ session library แบบนี้ A PHP Error was encountered Severity: 4096 Message: Object of class stdClass could not be converted to string Filename: libraries/Session.php Line Number: 715 ลองค้นดูในเน็ตแล้วพบว่าเป็นบั๊กของ session เกี่ยวกับ object storage วิธีการแก้ที่ http://codeigniter.com/forums/viewthread/95690/P0/ โดยให้แก้ไฟล์ system/libraries/Session.php ที่บรรทัด 683 และ  714  จาก $data[$key] = str_replace(‘\’, ‘{{slash}}’, $val); ให้่เป็น if(!is_object($val))    $data[$key] = str_replace(‘{{slash}}’, ‘\’, $val);

Codeigniter ตอน pagination class

Codeiginer มี pagination class เพื่อช่วยในการจัดแบ่งข้อมูลที่จะนำแสดงบนเว็บ โดยผู้ใช้สามารถกำหนดได้ว่าในแต่ละหน้านั้น จะให้แสดงจำนวนข้อมูลจำนวนเท่าใด โดยจะมีการทำลิ้งก์ให้เลือกหน้าถัดไปหรือย้อนหลังให้อัตโนมัติ เช่น « First < 1 2 3 4 5 > Last » ตัวอย่างการใช้งาน $this->load->library(‘pagination’); $config[‘base_url’] = ‘http://example.com/index.php/test/page/’; $config[‘total_rows’] = ‘200’; $config[‘per_page’] = ’20’; $this->pagination->initialize($config); echo $this->pagination->create_links(); องค์ประกอบเบื้องต้น ตัวแปร  $config จากตัวอย่างข้างต้น  ใช้ในการกำหนดองค์ประกอบที่ต้องการ  โดยสามารถสร้างไฟล์สำหรับเก็บตัวแปร $config ชื่อ  pagination.php  แยกไว้ต่างหาก   แล้วบันทึกไฟล์ไว้ที่ config/pagination.php base_url เป็น URL ของ controller class  และ function … อ่านต่อ …

Permission denied: .htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

If you are getting 403 error on your site with following messege in your error log Permission denied: /home/user/public_html/subdomain/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable Then it seems that the nobody user is not getting read and executing permission upto any of that folder.So make sure that the public_html and the … อ่านต่อ …

PHP Error Handling

สำหรับ production servers ให้สร้างไฟล์ .htaccess และใส่ข้อมูลต่อไปนี้ (แก้ไขตามสมควร) # PHP error handling for production servers php_flag display_startup_errors false php_flag display_errors false php_flag html_errors false php_flag log_errors true php_flag ignore_repeated_errors false php_flag ignore_repeated_source false php_flag report_memleaks true php_flag track_errors true php_value docref_root 0 php_value docref_ext 0 php_value error_log /home/path/public_html/domain/PHP_errors.log php_value error_reporting 999999999 log_errors_max_len 0 <Files /home/path/public_html/domain/PHP_errors.log> Order … อ่านต่อ …

ค้นหาค่า auto_increment ของ table ด้วย MDB2

        $sql = “SHOW TABLE STATUS LIKE ‘table_name'”;         $res = $mdb2->query($sql);         if (PEAR::isError($res)) {             die($res->getMessage());         }         $result = $res->fetchRow();         $next_id = $result[‘auto_increment’];

จัดการภาษาไทย (UTF-8) ด้วย Multibyte String Functions

UTF-8 ใช้พื้นที่ 3 ไบต์ ในการเก็บข้อมูลภาษาไทย 1 อักขระ  ดังนั้นจึงไม่สามารถใช้ฟังก์ชัน เช่น strlen() และ substr() กับภาษาไทยที่เป็น UTF-8 ได้ เช่น $string = “ที่นี่abcd1234”; echo ‘strlen() return: ‘.strlen($string); ผลลัพธ์ที่ได้คือ strlen() return: 26 ตัวเลข 26 มาจาก ภาษาไทย 6×3 = 18, ภาษาอังกฤษ 4 และตัวเลข 4 ตัว ดังนั้นเพื่อให้นับจำนวนตัวอักขระได้อย่างถูกต้องจะต้องใช้ฟังก์ชัน multibyte  string  เช่น จากตัวอย่างข้างต้น จะต้องใช้ฟังก์ชัน mb_strlen() แทน strlen()