2015-09-07 33 views
3

我有一個客戶使用Rackspace Cloud Sites在他們的平臺上宣傳PHP 5.4,但我已經通過他們的在線支持被告知不能使用特徵。5.4.4版能否禁用PHP Traits?

當使用性狀時,我收到500錯誤,並且發現代碼沒有問題,我要求他們的在線支持被告知「這在我們的環境中是不允許的」。使用以下結果基本PHP代碼示例在500內部服務器錯誤:

class Base { 
    public function sayHello() { 
     echo 'Hello '; 
    } 
} 

trait SayWorld { 
    public function sayHello() { 
     parent::sayHello(); 
     echo 'World!'; 
    } 
} 

class MyHelloWorld extends Base { 
    use SayWorld; 
} 

$o = new MyHelloWorld(); 
$o->sayHello(); 

是有一些原因,特徵將被禁用或可他們甚至被禁用? phpinfo()報告的版本是5.4.10。

+2

Wut?這是我聽過的最奇怪的事情。禁用特質沒有理性的理由;這不像它是一個安全關鍵功能。當你處於這種狀態時,不妨關閉類和接口。確定代表不是在背後說話嗎? – deceze

+0

@deceze他們是我的想法,因此也是這個問題。 Rep表示他們不知道爲什麼,反應是來自運營團隊。我希望有其他人使用rackspace雲網站託管可以複製這個問題,也許其他人可能有一個原因。 – Pollywaffle

+1

這是堅果。我從來沒有聽說過這樣的事情。你如何禁用特定的語言功能? –

回答

2

經過與rackspace支持的討論後,似乎問題在於xcache和某些項目(如特徵)的執行。將以下行添加到.htaccess可解決問題:

php_flag xcache.cacher 0 

似乎它不是rackspace問題,而是xcache問題。

+0

你可以問問題是什麼? –

+0

他們目前正在運行XCache 2.0.1,我會建議這是[錯誤](http://xcache.lighttpd.net/ticket/295)這是造成這個問題。它已被修復,但它不在它們正在使用的版本中。 – Pollywaffle

+0

有趣,謝謝:) –

0

Php性狀無法禁用。如果你對性狀的使用有限,你可以評論「使用」聲明。

+0

我使用的是使用特徵的軟件包,所以它不是一個真正的修改代碼的選項。有趣的是,它會運行良好,直到你調用一個通過特質實現的方法。 – Pollywaffle