หมวดหมู่: PHP

แก้ระบบ error ของ CodeIgniter สำหรับ APIแก้ระบบ error ของ CodeIgniter สำหรับ API

เดิมการแสดง error จะแสดงออกมาเป็น html แต่เมื่อเรานำ CI มาใช้เป็นระบบ API ถ้าแสดงแบบเดิมจะเกิดปัญหา app บน iphone / ipad ล่ม เพราะว่าข้อมูลที่ส่งออกไป กับที่ ios ทั้งหลายคาดว่าจะได้รับไม่ตรงกัน แก้ไม่ยากครับ แค่แทนที่ไฟล์ใน application/errors จาก code ด้านล่าง

error_404.php

<?php
global $application_folder;

// Get an article from the database, show a 404 page if the requested article was not found.

	$article = get_content ($this->uri->uri_string ()) ;

	if (empty ($article)) {
		show_404 ($this->uri->uri_string ()) ;
	}

$datas['status'] = -1;
$datas['type'] = '404';
$datas['messageHeading'] = '404';
$datas['message'] = 'file not found';

$logs = "nnn".date ('Y-m-d H:i:s') ;
$logs = $logs."ntURLt".$_SERVER['SERVER_ADDR'].$_SERVER['REQUEST_URI'];
$logs = $logs."ntPOSTt".print_r ($_POST ,true) ;
$logs = $logs."ntRETURNt".print_r ($datas ,true) ;
$fp = fopen ($application_folder.'/logs/error'.date ('Y-m-d') .'.txt' ,'a+') ;
flock ($fp ,LOCK_EX) ;
fwrite ($fp ,$logs) ;
flock ($fp ,LOCK_UN) ;
fclose ($fp) ;
exit (json_encode ($datas)) ;

error_db.php

<?php
global $application_folder;
$datas['status'] = -1;
$datas['code'] = 1;
$datas['type'] = 'database';
$datas['messageHeading'] = $heading;
$datas['message'] = 'database error';
$datas['message'] = $message;

$logs = "nnn".date ('Y-m-d H:i:s') ;
$logs = $logs."ntURLt".$_SERVER['SERVER_ADDR'].$_SERVER['REQUEST_URI'];
$logs = $logs."ntPOSTt".print_r ($_POST ,true) ;
$logs = $logs."ntRETURNt".print_r ($datas ,true) ;
$fp = fopen ($application_folder.'/logs/error'.date ('Y-m-d') .'.txt' ,'a+') ;
flock ($fp ,LOCK_EX) ;
fwrite ($fp ,$logs) ;
flock ($fp ,LOCK_UN) ;
fclose ($fp) ;
exit (json_encode ($datas)) ;

error_general.php

<?php
global $application_folder;
$datas['status'] = -1;
$datas['type'] = 'general';
$datas['messageHeading'] = $heading;
$datas['message'] = $message;

$logs = "nnn".date ('Y-m-d H:i:s') ;
$logs = $logs."ntURLt".$_SERVER['SERVER_ADDR'].$_SERVER['REQUEST_URI'];
$logs = $logs."ntPOSTt".print_r ($_POST ,true) ;
$logs = $logs."ntRETURNt".print_r ($datas ,true) ;
$fp = fopen ($application_folder.'/logs/error'.date ('Y-m-d') .'.txt' ,'a+') ;
flock ($fp ,LOCK_EX) ;
fwrite ($fp ,$logs) ;
flock ($fp ,LOCK_UN) ;
fclose ($fp) ;
exit (json_encode ($datas)) ;

error_php.php

<?php
global $application_folder;
$datas['status'] = -1;
$datas['type'] = 'php';
$datas['messageHeading'] = 'A PHP Error was encountered';
$datas['message'] = $message;
$datas['severity'] = $severity;
$datas['filepath'] = $filepath;
$datas['line'] = $line;

$logs = "nnn".date ('Y-m-d H:i:s') ;
$logs = $logs."ntURLt".$_SERVER['SERVER_ADDR'].$_SERVER['REQUEST_URI'];
$logs = $logs."ntPOSTt".print_r ($_POST ,true) ;
$logs = $logs."ntRETURNt".print_r ($datas ,true) ;
$fp = fopen ($application_folder.'/logs/error'.date ('Y-m-d') .'.txt' ,'a+') ;
flock ($fp ,LOCK_EX) ;
fwrite ($fp ,$logs) ;
flock ($fp ,LOCK_UN) ;
fclose ($fp) ;
exit (json_encode ($datas)) ;

เท่านี้ error ทั้งหลายจะแปลงกายไปเป็น แบบ json และบันทึกลงไฟล์ใน application/logs เป็นรายวัน