2016-11-17 9 views
0

以前のプログラマーがCodeIgniterフレームワークで構築したAPIをリモートでデバッグしています。私は他のPHPのMVCフレームワークでプログラムされたが、私は前にAPIを構築していない(もCodeIgniterのを使用)決して、および変数をデバッグのは常にエコーほど簡単だった、のvar_dumpますprint_r、...または単にフレームワークのを使用しますログコマンド。CodeIgniterで作成したAPIに変数を記録する方法は?

今、私はそれにエラーとログを表示するページを持っていない(または私がやる?)、私は運なしLOG_MESSAGEのerror_log、およびput_file_contentsを試してみました!最初のログコマンドだけを実行しますが、2番目のログコマンドは実行しません!私は、次の機能を持たせて私モデルで

public function processcontacts($data) { 
     error_log(json_encode($data), 3, "~/logs/processcontacts_data.txt"); 
     $countryCode = $data["countryCode"]; 
     error_log(json_encode($countryCode), 3, "~/logs/processcontacts_countryCode.txt"); 
     $isContact = array(); 
     $isNotContact = array(); 
     foreach ($data as $key => $value) { 

       $value->phone = str_replace(" ", "", $value->phone); 
       $value->name = str_replace(" undefined", "", $value->name); 
       $value->name = str_replace(" Undefined", "", $value->name); 
       $query = $this->db->get_where('appusers', array(
        'id' => $this->getMyId($value->phone, $countryCode) 
         ) 
       ); 
       if ($query->num_rows() > 0) { 
        $row = $query->row(); 
        $value->country = $row->country; 
        if ($row->photoapproved == 1) { 
         $value->photo = $row->photo; 
        } 
        $value->token = $row->token; 
        array_push($isContact, $value); 
       } else { 
        array_push($isNotContact, $value); 
       } 
      } 

     $returner = array(); 
     $returner["isMember"] = $isContact; 
     $returner["isNotMember"] = $isNotContact; 
     return json_encode($returner); 
    } 

は、私は2つのerror_log(またはput_file_contents)を持って、まだ一つだけは、その後何もアップして示していません!どのような可能性がこれの原因となる可能性がありますそれを追跡する方法

+0

codeigniterにはフックがあります。ルーティングの前または後に呼び出すことができるフックを作成し、その時点以降に発生したエラーをキャッチすることができます。 – Ima

+0

あなたは別のファイルに書き込むことを知っていますか? –

+0

あなたは、Postman(https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en)でリクエストを作成して、ちょうど 'var_dump()'を実行してみることができます。 – xpuc7o

答えて

0

CodeIgniterには、内蔵のいくつかのエラーログ機能を持っています/application/config/config.php

  • あなたの/アプリケーション/ logsフォルダを書き込み可能にし

  • セット:あり

    $config['log_threshold'] = 1;

ログのような複数のレベルですこの:

以上の基準については
/* 
|-------------------------------------------------------------------------- 
| Error Logging Threshold 
|-------------------------------------------------------------------------- 
| 
| You can enable error logging by setting a threshold over zero. The 
| threshold determines what gets logged. Threshold options are: 
| 
| 0 = Disables logging, Error logging TURNED OFF 
| 1 = Error Messages (including PHP errors) 
| 2 = Debug Messages 
| 3 = Informational Messages 
| 4 = All Messages 
| 
| You can also pass an array with threshold levels to show individual error types 
| 
| array(2) = Debug Messages, without Error Messages 
| 
| For a live site you'll usually only enable Errors (1) to be logged otherwise 
| your log files will fill up very fast. 
| 
*/ 
$config['log_threshold'] = 4; 

CodeIgniter Error Handling

は、ウェブサーバプロセスがへの書き込み可能なアクセス権を持っていることを確認すること

構成設定でログファイル名の末尾を必要とする「/」 UPDATED見ますディレクトリ

+0

私はそれをちょうどそのように設定しました。しかし、ありがとう –

+0

私の更新された答えを見てください。 –

0

このリンクに従って、発生したエラーを電子メールで送信するカスタム例外クラスを見つけます。エラーを記録するように変更することができます。

https://github.com/mikedfunk/CodeIgniter-Email-PHP-Errors/blob/master/application/core/MY_Exceptions.php

+0

ci2のレガシーコード用で、ciと互換性がありません3 –

+0

彼はどんなバージョンでも言及しましたか?古いコードで作業していると言われています。 – Ima

0

それは私が右のphp.iniファイルを設定していなかったことが判明します!修正するために必要な1は内部の一つです「../apache2/ ..」

しかし、私は本当にPostmanは、リモートAPIをデバッグするための素晴らしいツールですので、私はここでそれを指摘したかったことが判明注意。 (ありがとう@ xpuc7o)

関連する問題