0

Zend Framework 1.11 で開発されたアプリケーションがあります。Zend_OpenId を使用して、パートナーの Web サイトとのシングル サインオンを作成しています。PHP のバージョンを 5.3.13 にアップグレードするまで、これは正常に機能していました。以下に示すエラーが表示されます。

Error: Cannot access storage directory /root/tmp/

これを Zend_OpenId_Consumer_Strorage_File まで追跡しました。一時ディレクトリは、/root/tmp を返す getenv('TMP') によって設定されます。tmp ディレクトリを /tmp にハードコーディングしてこれをオーバーライドすると、OpenId SSO アプリが再び機能します。

アプリが動作する 2 つ目のサーバーがありますが、以前のバージョンの PHP 5.3 を実行しています。getenv('TMP') をテストすると、そのサーバーで false が返されるため、Zend は /tmp を調べます。

次のいずれかが可能ですか?

a) Zend でストレージ ディレクトリをオーバーライドしますか? b) 5.3.13 を実行しているサーバーで getenv を無効にして false を返し、Zend が /root/tmp ではなく /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 に答える