[PHP-users 14054] PEAR デストラクタのエミュレーションから fopen を呼ぶとエラーが返る

sou php-users@php.gr.jp
Tue, 18 Mar 2003 01:59:05 +0900


初めまして, 城戸 と申します.

PEAR マニュアルにあるサンプルコード

例 1PEAR: デストラクタのエミュレーション
http://pear.php.net/manual/ja/class.pear.php

を不具合を削りつつ実行してみたところ, PEAR デストラクタのエミュレーショ
ンでの fopen に失敗してしまいます.
Linux 環境では permission denied を返します.
これが
$fileobj->_FileContainer();
や
register_shutdown_function($fileobj->_FileContainer());
と PEAR のデストラクタエミュレーションを経由せずに実行した場合には正しく
機能します.
また PEAR のデストラクタエミュレーションにより実行された時も fopen でな
く, 例えば print などは正常に実行されます.

分からないなりに PEAR.php の中を追いかけてクラスから独立した関数
_PEAR_call_destructors()
とデストラクタのエミュレーションとなっている
register_shutdown_function("_PEAR_call_desructor");
を見つけたのですが, ここから何故 fopen だけがエラーを返すのかが分からず
行き詰ってしまいました.

何かお心当たりがあれば教えていただきたいと思いポストしました.

環境 1
PEAR.php $Id: PEAR.php,v 1.52 2003/01/09 15:14:23 ssb Exp $
Redhat7.2
Apache 1.3.27
PHP 4.3.1

環境 2
PEAR.php $Id: PEAR.php,v 1.52 2003/01/09 15:14:23 ssb Exp $
WindowsXP
Apache 1.3.27
PHP 4.3.1 (SAPI)

# PHP クイズ気分でしたが, ギブアップです;

-- 
sou <sou@enzo.bz>