0

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

Error: Cannot access storage directory /root/tmp/

我已将其追踪到 Zend_OpenId_Consumer_Stroage_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?

4

1 回答 1

0

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

$dir = new Zend_OpenId_Consumer_Storage_File('/tmp');
$consumer = new Zend_OpenId_Consumer($dir);
于 2012-06-19T10:00:07.060 回答