2012-06-19 54 views
0

我有一個在Zend Framework 1.11中開發的應用程序。我使用Zend_OpenId與合作伙伴網站創建單一登錄。這一直運行良好,直到我升級我的PHP版本到5.3.13。我現在得到如下所述的錯誤:Zend OpenId消費者存儲無法訪問存儲目錄

Error: Cannot access storage directory /root/tmp/ 

我已經跟蹤下來到Zend_OpenId_Consumer_Strorage_File。臨時目錄由getenv('TMP')設置,它返回/ root/tmp。如果我通過將tmp目錄硬編碼到/ tmp來覆蓋這個,我的OpenId SSO應用程序再次工作。

我有一個應用程序工作的第二個服務器,但它運行的是早期版本的PHP 5.3。測試getenv('TMP')在該服務器上返回false,所以Zend在/ tmp中查找。

是否有可能之一:

一)覆蓋在Zend的存儲目錄? b)在運行5.3.13的服務器上禁用getenv,以便它返回false,因此Zend在/ tmp中查找而不在/ root/tmp中?

+1

重寫構造函數,以便您具有一致的行爲。不要硬編碼到框架中。 –

回答

0

感謝Aurimas的評論。對於那些對可能有類似問題的答案感興趣的人,我已覆蓋構造函數:

$dir = new Zend_OpenId_Consumer_Storage_File('/tmp'); 
$consumer = new Zend_OpenId_Consumer($dir);