いくつかのPHPコードをデバッグしたいのですが、ログを画面またはファイルに出力するのがいいと思います。
PHPコードでログを印刷するにはどうすればよいですか?
通常のprint
/printf
は、コンソールではなくHTML出力に送られるようです。
PHPコードを実行するApacheサーバーがあります。
あまり知られていないトリックは、mod_phpがstderrをApacheログにマップすることです。そして、そのためのストリームがあるので、file_put_contents('php://stderr', print_r($foo, TRUE))
は$foo
の値をApacheエラーログにうまくダンプします。
error_log(print_r($variable, TRUE));
役に立つかもしれません
error_log を使用して、サーバーにエラーログファイル(または、必要に応じてオプションのその他のファイル)を送信できます。
Linuxを使用している場合:
file_put_contents('your_log_file', 'your_content');
または
error_log ('your_content', 3, 'your_log_file');
そして、コンソールで
tail -f your_log_file
これにより、ファイルの最後の行が継続的に表示されます。
あなたの心のフレームを変更する必要があります。あなたがPHPを書いているのは、あなたが書くことに慣れているということではありません。 PHPでのデバッグは、コンソール環境では行われません。
PHPには、デバッグソリューションの3つのカテゴリがあります。
PHPを他の慣れ親しんだ言語のように振る舞わせるのではなく、それらを使用することを学んでください。
コンソールでデバッグしていますか? PHPのデバッグにはさまざまなオプションがあります。迅速でダーティなデバッグに使用される最も一般的な関数は var_dump です。
そうは言っても、邪魔にならないように、var_dumpは素晴らしく、多くの人がそれだけであらゆることをしますが、他にも ツールとテクニック があります。
Webページでデバッグする場合に役立つことは、ダンプステートメントの周りに<pre> </pre>
タグをラップして、配列とオブジェクトの適切なフォーマットを提供することです。
すなわち:
<div> some html code ....
<a href="<?php $tpl->link;?>">some link to test</a>
</div>
dump $tpl like this:
<pre><?php var_dump($tpl); ?></pre>
最後に、エラー処理のデバッグがエラーを表示するように設定されているかどうかを確認してください。サーバー構成にアクセスできない場合は、スクリプトの先頭にこれを追加する必要がある場合があります。
error_reporting(E_ALL);
ini_set('display_errors', '1');
がんばろう!
Zend のようなフレームワークを統合したくない場合は、 trigger_error メソッドを使用してphpエラーログに記録できます。
次のようなファイルに書き込むこともできます。
$logFilePath = '../logs/debug.text';
ob_start();
// if you want to concatenate:
if (file_exists($logFilePath)) {
include($logFilePath);
}
// for timestamp
$currentTime = date(DATE_RSS);
// echo log statement(s) here
echo "\n\n$currentTime - [log statement here]";
$logFile = fopen($logFilePath, 'w');
fwrite($logFile, ob_get_contents());
fclose($logFile);
ob_end_flush();
Phpがファイル(775
)にアクセスして書き込みできるように、適切なアクセス許可が設定されていることを確認してください。
単純な方法はtrigger_errorです:
trigger_error("My error");
ただし、配列またはオブジェクトを配置することはできません
var_dump
私は次のように使用するので、cakephpを使用します。
$this->log(YOUR_STRING_GOES_HERE, 'debug');
これは、PHPのデバッグとロギングに最適なツールです。 PHp Debugger&Logger
わずか3行のコードですぐに動作します。 Ajaxデバッグのためにjsコンソールにメッセージを送信し、エラーハンドラーを置き換えることができます。また、var_dump()やprint_r()などの変数に関する情報も、より読みやすい形式でダンプします。非常に素晴らしいツール!
次を使用できます。
<?php
echo '<script>console.log("debug log")</script>';
?>
Php curlモジュールを使用して http://liveoutput.com/ を呼び出すことができます。これは、file_put_contents
の使用を制限するphp.iniの特定の制限が存在する安全な企業環境でうまく機能します。
私はこれらの多くを使用しましたが、通常は開発時にデバッグする必要があり、ローカルホストで開発するため、他の人のアドバイスに従って、ブラウザのJavaScriptデバッグコンソールに書き込みます( http:// www.codeforest.net/debugging-php-in-browsers-javascript-console )。
つまり、PHPがブラウザーで生成しているWebページを表示し、F12キーを押すと、デバッグトレースをすばやく表示/非表示できます。
デバッガー、CSSレイアウトなどの開発者ツールを常に見ているので、そこでPHP loggonを見るのは理にかなっています。
誰かがそのコードを決定した場合、私は1つの小さな変更を加えました。後
function debug($name, $var = null, $type = LOG) {
追加した
$name = 'PHP: ' . $name;
これは、私のサーバー側PHPがJavaScriptを含むJavaScriptを生成するためです。PHPとJSからの出力を区別すると便利だと思います。
(注:現在、これを更新して、PHP、JS、およびデータベースアクセスからのさまざまな出力タイプのオン/オフを切り替えられるようにしています)