LoginSignup
0
0

More than 3 years have passed since last update.

Heroku logs に var_dump()

Last updated at Posted at 2019-05-30

Heroku上のPHPアプリでprintデバッグする場合
error_log()で出力するのがお手軽

問題点

けれども、配列の中身が見たくて

 $a = array(1, 2, array("a", "b", "c"));
 error_log('$a:');
 var_dump($a);

 error_log('$a:' . var_dump($a));

としても
↓のようになって、配列の中身はHeroku logsに出力されない

$a:

原因

var_dump()は返り値が無いので、error_log()に出力内容が渡されていないから

対策

var_dumpの出力を変数に格納し、その変数をerror_log()に渡す

// var_dumpを文字列に変換する関数を作成
function get_str_var_dump($var){
    ob_start(); // バッファリングON
    var_dump($var);
    $bar = ob_get_contents(); // バッファの内容を変数に格納
    ob_end_clean(); // バッファを消去してバッファリングOFF
    return $bar;
}

 $a = array(1, 2, array("a", "b", "c"));

 // 配列$aをget_str_var_dump()で文字列に変換してからerorr_log()に渡す
 error_log('$a:' . get_str_var_dump($a));

↓ のように出力できた

$a:array(3) {  
[0]=>  
int(1)  
[1]=>  
int(2)
[2]=>
array(3) {
    [0]=>
    string(1) "a
    [1]=>
    string(1) "b
    [2]=>
    string(1) "c
    }
}

参考

https://macocci7.exblog.jp/18510693/
https://www.php.net/manual/ja/function.var-dump.php
https://www.php.net/manual/ja/function.ob-start.php

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0