2014-10-16 43 views
0

我有兩臺服務器。 第一個(本地)代碼正常工作, 第二個(階段)我得到語法錯誤 - ofcourse檢查腳本文件(scp &差異)。 大括號正確。PHP語法錯誤取決於版本/環境

命令用於檢查

php -l template.phtml 

階段錯誤

PHP Parse error: syntax error, unexpected '}' in template.phtml on line 135 
Errors parsing template.phtml 

135線文件的

<?php $i++; } ?> 

本地皮棉輸出(與第二本地服務器還試圖)

No syntax errors detected in template.phtml 

階段版本

PHP 5.5.3-1ubuntu2.5 (cli) (built: Jun 25 2014 17:14:14) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies 
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies 

當地版本

PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 

antoher本地服務器版本

PHP 5.3.10-1ubuntu3.14 with Suhosin-Patch (cli) (built: Sep 4 2014 07:08:49) 
Copyright (c) 1997-2012 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies 

在舞臺上安裝了php-fpm(我沒有處理它)。

任何想法? 我應該處理php.ini還是隻重新安裝php?

+0

有趣。是否有可能刪除該行(以及所有打開'{')的代碼,並且您的代碼仍然執行某些操作,並且如果有的話是否還有其他PHP錯誤?你能顯示template.phtml的完整代碼嗎?你在你的任何代碼中使用短標籤嗎? – James 2014-10-16 11:37:07

+0

考慮一下,它可能是PHP v 5.5中更改的內容 – James 2014-10-16 11:40:51

回答

-1

它看起來像你混合PHP和HTML。試試colon syntax

雖然最佳做法是將PHP代碼與HTML代碼分開。類似Smarty可以幫助解決這個問題。

+0

爲什麼會解釋它在一臺服務器上運行,而不是另一臺服務器?另外,分離PHP和HTML並不意味着*不會在views/templates/etc中使用PHP。否則,您如何從您的引擎/框架中獲取數據以在HTML中顯示? – James 2014-10-16 11:45:18

+0

事實上,他們是不同的服務器並不重要,它們是不同版本的PHP。 – Peter 2014-10-21 16:28:48

+0

雖然你的回答並不包括你在評論中所說的話,但你的回答並沒有真正回答這個問題。混合PHP和HTML是好的,他們在他們的示例代碼中打開和關閉PHP標籤,所以我懷疑這是他們的實際問題。特別是它在另一臺服務器上運行。 – James 2014-10-21 23:21:07