2

ここで何が間違っている可能性があるかについて、誰かが私に指針を与えることができますか:

ファイル f1.php:

<?php

include('f2.php');

ファイル f2:

<?php
echo "HERE";

報告されたエラー:

`Parse error: syntax error, unexpected '=' in f1.php on line 4`
  • nginx 1.2.6 で php-fpm 5.4 を使用しています。
  • ファイルには BOM マーカーがありません。
  • サーバーにハードウェアの問題はありません。

おそらく設定の問題ですが、私はそれを理解できないようです。

数分前にこの質問をしましたが、特定の状況ではなくプロジェクトの状況を参照していたため、ローカライズされすぎてすぐに閉じられました ( https://stackoverflow.com/questions/14651673/strange-php-syntax -エラーの問題)

更新: 明らかに nginx とは関係ありません ... cli で実行すると同じエラーが発生します

4

2 に答える 2

2

私はそれを解決したようです...

短編小説:
で PHP を再コンパイルしまし--enable-zend-multibyteた。

長い話:
考えられるすべてを試しました...ソースファイルをバイト単位でチェックしましたが、問題は見つかりませんでした。私はphp内のファイルコンテンツを取得し、php内のバイト配列をエコーし​​ようとしましたが、この場合も問題は見つかりませんでした。
デバッグ シンボルを使用して php を再コンパイルしようとしましたが、プロセスは 0377 で終了し、gdb には何も役に立ちませんでした。

私が何をしたとしても、インクルード ステートメント (またはそのバリエーション) をヒットすると、インクルード ファイルの最後の行を過ぎた行で構文エラーが発生しました。

ファイルにはBOMがあると思います(私が尋ねたほとんどの人が示唆しているように)。だから私はそれどのようにphpが実行されていたかに関係していると思い、環境変数(LC_ *変数など)を変更しようとしましたが、やはり結果はありませんでした。

だから私は最後に add-configure-option-and-recompile-php セッションを行いました...すべてのスクリプトにマルチバイト文字が含まれておらず、前に述べたように BOM マーカーがないため、PHP を再コンパイルした後--enable-zend-multibyte、コードは期待どおりに動作し始めました。

提案してくれてありがとう。

于 2013-02-03T00:22:58.453 に答える
0

APC を使用している場合は、おそらく以前のバイト コードを更新していません。

試すapc_clear_cache();

于 2013-02-01T18:15:44.883 に答える