2009-10-12 30 views
2

我最近升級到xampp v1.7.2,它在我身上丟棄了PHP 5.3。除此之外,我所有的httpd.conf和php.ini都被清除了(我認爲這個版本將像所有早期的xampp版本一樣是一種升級)。無論如何,我花了一段時間來重新配置所有的服務 - 但現在我遇到了一個有趣的問題。替代條件語法(if-else)在PHP 5.3.0(xampp)上失敗

這種自寫CMS是在我的工作場所使用大量採用了替代條件語法的if-else語句,即

if(condition): ?> 
    <some html /> 
<?php else: ?> 
    <some other html /> 
<?php endif; 

過去,這很好地工作,與一起來到PHP 5.2.x XAMPP 1.7.1 - 現在突然這樣的代碼塊產生這樣的錯誤:

Parse error: syntax error, unexpected T_ELSE in ...

我沒有改變我的腳本以任何方式 - 用絕對的工作方式相同,而不在PHP 5.2.x.順利

所以我的問題是,PHP 5.3允許這樣的替代條件?或者我必須在我的配置文件中打開一些隱藏的選項?

請注意,我不使用短標籤 - 所以它們在這裏不是問題。

+0

聽起來像是你在談論升級爲系統級封裝或分發的一部分?你用什麼? – 2009-10-12 02:46:50

+0

爲了開發目的,我使用了名爲xampp的LAMP堆棧(http://www.apachefriends.org/en/index.html)。這就是PHP的新版本隨之而來的。 – 2009-10-12 03:02:52

回答

4

儘管5.3中的if/else語法沒有改變,但語法的許多其他部分都有。您應該在else語句之前檢查這些行,以查看是否有其他新語法功能混淆瞭解析器。

如果不能找出問題的所在,你永遠可以開始系統地刪除行代碼,直到你留下了以下三行:

<?php if(condition): ?> 
<?php else: ?> 
<?php endif ?> 

更新:你真的應該測試short_open_tag代碼打開,因爲你看到的語法錯誤是,如果你的地方有這個代碼,你會得到什麼:

<? if(condition): ?> 
<?php else: ?> 
<?php endif ?> 
+1

嘗試相同的...並仍在'其他'行上得到相同的錯誤。 – 2009-10-12 03:14:40

+1

你是對的!當我將short_open_tags打開時,它再次開始工作。所以我必須拼錯<?php到<?在我的代碼中的其他地方。我徹底檢查並重新檢查了這個代碼塊,並在這裏找不到任何實例。無論如何,我的開發。平臺回來了 - 感謝你:)不知道是否有任何簡單的方法來檢查我的項目文件中是否存在shottags .. – 2009-10-12 03:23:38

+0

順便說一下,能否請我指出一個頁面,列出此PHP版本中的所有語法更改?謝謝。 – 2009-10-12 03:26:13

0

是的,PHP 5.3允許爲alternative syntax控制結構,包括您的條件語句。

我會建議嘗試通過在一個或兩個地方用常規語法替換替代語法進行調試,以查看它是否修復了問題。如果是這樣,那麼你肯定知道問題是什麼。

+0

對!我會做同樣的事情,並儘快回覆你:) :) – 2009-10-12 03:03:25

+0

有趣的事情..如果我修改代碼塊爲標準語法,即如果(條件)回聲'' - 它工作!但是,如果這是要走的路,我必須坐下來修改成千上萬行代碼...... S – 2009-10-12 03:10:08

+0

您可以在其中更改代碼併發布它的代碼段嗎?還包括之前/之後的一點點。也許我會發現一些東西。 – 2009-10-12 03:17:49