0

これは、アプリケーションをオンラインで展開しているときに既に 2 回発生した問題であり、偶然に 2 回解決したこともありますが、問題の原因を理解することはできませんでした。3回目ですが、いまだに悩んでいます。

  1. 私はローカルで PHP ファイルと Notepad++ を使用しています (ファイルは UTF-8 でエンコードされており、BOM エンコードされていません)。ここ (config: easyPHP) では、PHP エラーなしですべてがうまく機能します。

  2. ファイルをサーバーにアップロードした後、一部のファイルで *unexpected T_FUNCTION in line 1* のような基本的な PHP エラーが表示されますが、コードにはエラーはありません。

  3. 幸運なことに、たまたま Windows のメモ帳でファイルを開いたところ、ヒントが得られました。文字間にスペースや改行がありません (これが、PHP でエラーが発生する理由です)。総括する:

Notepad++ で開いたファイル:

<?php
// Comment
function() { etc... (rest of the file)...

Windows のメモ帳で開いたファイル:

<?php//comment function(){ ... which causes error online (but not on EasyPHP)

私はどこでも見て、できる限りのことをしました(メモ帳++で改行を追加する、ANSI/UTF8に変換するなど、ファイルが破損しているかのようです)。これは、コピーしたスクリプトなどではありません。Windows に新しい *.txt ドキュメントを追加し、名前を *.php に変更して、すべてのファイルを作成します。

私の質問:

  • Notepad++ と Windows のメモ帳で異なる改行が表示されるのはなぜですか? エンコーディングの問題ですか?Windows/UNIX でファイルの解釈が異なる?
  • オンラインではなく、簡単な PHP を使用するコンピューターでこれが機能するのはなぜですか?

ヒントがなければ、回答をよろしくお願いします。

4

1 に答える 1

2

FTP経由で本番サーバーにファイルを転送する場合、問題は一部のftpクライアントが自動改行変換を行うことである可能性があります。別のftpクライアントでファイルを転送するか、設定を微調整して自動ASCIIテキスト改行変換を無効にします。

更新:
はい、おそらくあなたのファイルはバイナリではなくASCIIモードで転送されているので、解決策はファイルをバイナリモードで転送するようにFilezillaを設定することです。実際の設定を参照してくださいhttps://stackoverflow.com/a/555003/352672

于 2012-11-29T18:28:57.550 に答える