簡體   English   中英

Amazon EC2 Server上的PHP語法錯誤(正在開發中)

[英]PHP Syntax Error on Amazon EC2 Server (Works In Development)

我有以下代碼行

foreach ($_SESSION['ini']->infrastructure()['buildings'] as $key => $value)

變量$ _SESSION ['ini']包含一個對象,該對象讀取各種.ini文件並將其值保存在內存中。 然后,在調用其函數時,它會將.ini變量的各個集合作為數組返回。 Infrastructure()就是這樣一個函數,它返回一個矩陣。 我只想從那個矩陣中取出['buildings']數組。 該循環在我的開發服務器上工作正常。 但是,當我將代碼上傳到Amazon EC2服務器時,服務器會引發以下錯誤:

Parse error: syntax error, unexpected '['

我假設這是對嘗試直接從函數的返回值獲取['buildings']數組的實踐的參考,實際上,以下代碼在EC2服務器上可以正常工作:

$placeholder = $_SESSION['ini']->infrastructure();
foreach ($placeholder['buildings'] as $key => $value)

誰能解釋在開發和生產之間的正確語法變化的原因,以及如何修復EC2服務器以使用開發代碼? 我寧願不使用'$ placeholder'方法重新編碼所有內容,因為它效率較低,而且在整個項目中我經常使用這種語法。

似乎您的EC2上的PHP版本小於5.4。 僅從5.4版本開始,才允許Function array dereferencing

函數數組解引用

infrastructure()['buildings']

因為您知道如何解決此錯誤,所以我不會寫。 這只是代碼無法在您的EC2上運行的版本。

此問題最可能與以下原因有關:

$_SESSION['ini']->infrastructure()['buildings']

直到PHP 5.4才添加對函數數組取消引用的支持,因此您的EC2實例運行的版本可能低於該版本。

請參閱: http//php.net/manual/en/migration54.new-features.php

您可以通過將函數的結果存儲在變量中來解決此問題:

$var = $_SESSION['ini']->infrastracture();
foreach ($var['buildings'] as $key => $value)

或者,如果您想繼續使用語法,則可以在EC2實例上升級PHP版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM