3

私は最近、行末に「CRLF」や「LF」ではなく「CR」しかないコード行が原因で、PHP が奇妙な動作をすることを発見しました。それが何であるかとして解釈します:改行ではなく改行です。

以前はそのような問題はありませんでしたが、最近、「Enter」を押して新しい行に移動すると、notepad ++ が CR のみを配置することがあることを発見しました...これにより、スクリプトの動作が悪くなりました。

たとえば、この Hello World スクリプトは、行が LF または CRLF で終了している場合に正常に動作しますが、CR だけでクラッシュします (少なくとも、私は peer1 サーバーと hostgator サーバーの両方でその問題を再現します。他の誰かが別の経験をしていますか?)...

<?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.cnn.com/" );
?>

そして、私はこのエラーを受け取ります:

致命的なエラー: 1 行目の /home/bernatch/public_html/test-redir-cr.php の未定義関数 phpheader() の呼び出し

明らかに、PHP は<?phpコードとヘッダー関数が同じ行にあると認識しています...

私の質問は: a) PHP に単一の CR をまったく別の行として解釈させる方法はありますか?

また

b) Enter キーを押すたびに、notepad++ に強制的に CRLF または LF を入力させる方法はありますか?

4

2 に答える 2

1

Mac は CR を使用します。Linux は LF を使用します。Windows は CR-LF を使用するため、Windows オペレーティング システムが CR の後に LF を挿入しないのは非常に奇妙です。多分私はここで何かを逃しています。

Windows で編集 -> Linux で表示 = OK

Windows で編集 -> Mac で表示 = OK

だから私はそれがあなたのFTPクライアントである可能性があると推測しています. プレーン テキスト ファイルは、バイナリではなく ASCII としてアップロードしてください。

于 2012-09-01T02:43:38.607 に答える
0

Notepad++ では、この SuperUser.com answerで報告されているように、Windows 形式への EOL 変換を実行できるはずです。

于 2012-06-27T02:26:58.103 に答える