Zend OpenId 消费者存储 无法访问存储目录


Zend OpenId Consumer storage Cannot access storage directory

我有一个用Zend Framework 1.11开发的应用程序。 我使用Zend_OpenId创建合作伙伴网站的单一登录。 在我将 PHP 版本升级到 5.3.13 之前,这一直运行良好。 我现在收到如下错误:

Error: Cannot access storage directory /root/tmp/

我已经追踪到Zend_OpenId_Consumer_Strorage_File。 临时目录由返回/root/tmp 的 getenv('TMP') 设置。 如果我通过将 tmp 目录硬编码为/tmp 来覆盖它,我的 OpenId SSO 应用程序可以再次工作。

我有第二台服务器,该应用程序可以在其上运行,但它运行的是 PHP 5.3 的早期版本。 测试 getenv('TMP') 在该服务器上返回 false,因此 Zend 在/tmp 中查找。

是否可以:

a) 覆盖 Zend 中的存储目录?b) 在运行 5.3.13 的服务器上禁用 getenv,以便它返回 false,因此 Zend 在/tmp 中查找而不是/root/tmp?

感谢Aurimas的评论。 对于那些对答案感兴趣的人,他们可能有类似的问题,我已经覆盖了构造函数:

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