php
  • configuration
  • 2013-02-01 46 views 2 likes 
    2

    可能有人給我什麼可能是錯在這裏的指針:PHP語法錯誤的問題(與測試用例)

    文件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-error-issue

    UPDATE:nginx的顯然不相關...如果在cli中執行,則會出現相同的錯誤

    +2

    你有任何PHP配置是自動預先向所有請求文件? – datasage

    +0

    解析錯誤:語法錯誤,在f1中意外的'='。第4行的php - f1.php只有3行,但是第4行有錯誤? – user20232359723568423357842364

    +0

    @ user2023235:f1有4行,f2有3行 –

    回答

    2

    看來我已經解決了它...

    短篇小說:
    重新編譯PHP與--enable-zend-multibyte

    長篇小說:
    我嘗試了一切可想象的...檢查源文件逐字節,並沒有發現問題。我試圖獲取php內的文件內容,並從insidde php迴應字節數組,在這種情況下,也沒有發現問題。
    我試過用調試符號重新編譯php,但是使用0377和gdb完成的過程沒有任何用處。

    無論我做了什麼,uppon打包括聲明(或它的變體),我得到了包括文件的最後一行的語法錯誤。

    我期望文件具有BOM(正如我問過的幾乎所有人所建議的)。所以我認爲它必須是東西與如何PHP運行,並嘗試更改環境變量(如LC_ *變量),但又沒有結果。

    所以我最後有一個add-configure-option-and-recompile-php會話......不確定爲什麼所有的腳本都不包含多字節字符,並且沒有BOM標記,但是在重新編譯之後PHP與--enable-zend-multibyte,代碼開始按預期工作。

    感謝大家的建議。

    +0

    現在有點晚了,但你有沒有試圖保存你的。只有ascii模式的Windows記事本的PHP文件?這將會清除其中的每個多字節字符 – dynamic

    +0

    @link:正如我所說的,文件已用十六進制編輯器逐字節地檢查過,文件中沒有多字節字符。 –

    0

    如果您正在使用APC,則您沒有更新以前的字節碼。

    嘗試apc_clear_cache();

    +0

    沒有緩存已被使用 –

    相關問題