2011-11-29 12 views
14

デバッグにerror_log()を使用するコードを作成しています。問題は何らかの理由で出力の改行がすべて文字列\nとして表示されるため、実際の改行はない(複雑な配列を理解することは不可能に近い)。
error_log機能でvar_exportprint_rの両方を使用しようとしましたが、どちらも同じ結果につながりました:全体に点在する\nのテキストブロック。私もやってみたstr_replace\nPHP_EOL成功なし。私は間違って何をしていますか?Mac OSXのリテラル " n"文字列として改行を出力するPHP error_log

明示するには、文字列がコンソールエラーログビューア、テキストエディット、およびターミナルに表示されます。

EDITちょうどはい、私はあなたが二重引用符する\n文字列を、それらが改行として表示されるようにするために必要なことを承知していることが事前に注意することは望んでいました。しかし、私はprint_rまたはvar_export(配列を調べる)の出力を扱っていますので、これは本当に私を助けません(私は思っていますか?)。

答えて

5

明らかに、この問題はお使いのオペレーティングシステムに依存しません。

PHP error log and newline charsは...あなたがファイルを指すようにDebianの上ごphp.iniでのerror_logディレクティブを変更することができる必要があります:この質問を参照してください。これが定義されていないと、複数の行をサポートしていないsyslogを経由します。代替案として

+1

を入力します。Apacheがerror.logに改行を書き込むためには、書き込み権限が必要です(そうでないとsyslogはerror.logに書き込まれます)。 Apacheのエラー(私の好み)のsyslog形式を保存したい場合は、修正ファイルまたは新しいファイル 'php-errors.log'をPermsします。 –

31

、あなたは彼らがコンソールで新しい行と同じように表示されるように、sedを通じて '\ n' を置き換える/処理することができます:

Linuxの

$ tail -f error_log | sed "s/\\\n/\\n/g" 

Mac OSのX

$ tail -f error_log | sed "s/\\\n/^M^L/g" 

注意:Mac OS Xでは、行の最後には、Linuxシステムで、それが唯一のLF(ラインフィード)

注2 CRLF(キャリッジリターンラインフィード)ですさ:MacのOS Xで出力^Mへのターミナルで、 ^Lを出力するには、Control+V Control+L

+2

かなり巧妙な回避策:) –

+2

OSX構文が機能しませんでした。 – Tyguy7

+0

OSXのバージョン。マーベリックス? – eightyfive

関連する問題