どのようにajax呼び出しを介して呼び出される関数内の変数をデバッグするには?

I want to debug a function on this file https://github.com/Project60/org.project60.banking/blob/9dc6bdcc486753f70948edfd4ea36df0eb9d2f86/extension/api/v3/BankingTransaction.php

/**
 * Analyses the given bank transactions
 *  used as AJAX call
 *
 * @param  list    list of bank_tx ids to process
 * @param  s_list  list of bank_tx_batch ids to process
 *
 * @return  array api result array
 * @access public
 */
function civicrm_api3_banking_transaction_analyselist($params) {
CRM_Core_Error::debug_var ('params', $params);

}

The above function is invoked by button which has onclick event
https://github.com/Project60/org.project60.banking/blob/9dc6bdcc486753f70948edfd4ea36df0eb9d2f86/extension/templates/CRM/Banking/Page/Review.tpl

コードは以下の通りです

  <div class="icon preview-icon ui-icon-refresh"></div>{ts}Analyse (again){/ts}

しかし、私はログファイルに何も表示されません、どのように変数を得ることができます 私はサイト/
defaut/files/civicrm/ConfigandLog /
私はcivicrm.logファイルや、.logで終わる他のファイルは表示されません。私が入力したデバッグの価値はありません。
また、デバッグ設定がYesに設定されている

ベストアンサー

あなたのDrupalを使用している場合は、CiviCRMのデバッグログ(およびその他のファイル)を
sites/default/files/civicrm/ConfigAndLog/マルチサイトディレクトリは「デフォルト」であり、ウェブサーバはそのディレクトリに書き込むことができる。それが見えない場合は、次のことができます:

  • Check assumptions of what
    CRM_Core_Error::debug_var() will do with the input
    you’re handing it (eg, check that if you pass in a string like
    SNORK instead of an array, you see that same word
    appear in a logfile). ::debug_var() looks like it does
    print_r
  • tail -f /path/to/*.log might reveal which logfiles
    are being printed to when you hit that endpoint.
  • Check the multisite directory is what you think (should be the
    same as your settings.php and
    civicrm.settings.php)
  • Check again for typos (I see defaut in your
    question, but that’s probably not it!)
  • Check that the sites/default/files/ directory and
    its descendant directories are writable to the webserver (typically
    user www-data, httpd, _www
    etc)
  • Double check usage of the debug functions – there have been

    docs inconsistencies
    which might lead you astray.
  • Check out CiviCRM docs on debugging
  • There are other SE questions on debugging, eg
    tips on debugging when you can’t view page output
    also applies
    well to AJAX callbacks etc where you can’t/shouldn’t
    modify page output.

CiviCRM has a more modern log interface available in
Civi::log()->debug('debug info'); (see
How to print variable/debug data from your extension.php?
for
an answer on that).

それでも問題がなければ、CiviCRMのデバッグが動作していない場合、 error_log()
file_put_contents()などのPHPデバッグメソッドに落ちる可能性があります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です