[PHP-users 7255] PHP のバグ?
Nobuyuki.Fukuoka
php-users@php.gr.jp
Wed, 1 May 2002 10:33:44 +0900
はじめまして、
このたび入会させていただいた福岡です。
環境:
Solaris/Apache(1.3.20)+OpenSSL(0.9.6)+mod_ssl(2.8.4)+PHP(4.2.0)+PostgreSQL(7.1.3
)
PHPはまだまだ初心者です。
一部にオブジェクト指向を取り入れたCGIを製作中ですが、
どうにも行き詰まってしまったので質問させてください。
以下のようなクラスがあったとします。
class A
{
var $sub1,$sub2;
function A
{
$sub1 = new B;
$sub2 = new C;
}
function writeDB( $db )
{
$sub1->writeDB( $db );
$sub2->writeDB( $db );
}
}
class B
{
function writeDB($db)
{
updateDB( $db ); // PostgreSQLテーブルの更新
}
}
class C
{
function writeDB( $db )
{
updateDB( $db ); // PostgreSQLテーブルの更新
}
}
$obj =& new A;
とした場合に
$obj->writeDB($db);
を実行します。
この時にB,CそれぞれのメソッドwriteDBが実行されますが、
無事updateDB()内のpg_exec()はエラーもなく実行されるのに
テーブルの更新が行なわれない「場合」があります。
問題のSQL文はpsql上では正常に実行されるのでPostgreSQL側の問題ではないと思いま
す。
A::writeDB内の記述順序を変えると正常に動作しますが、
この現象ってC言語などでバッファオーバーフローを起こしたときと似てますよね?
要は動けばいいんですが、現状では気味悪くて完成とは言えません。
もちろん、どちらの場合もPHP、Apache、どちらもエラーは出ません。
前述ソースはかなり割愛してますが、
このようなクラスの中に別のクラスのインスタンスを含める形で
もう少し大きなツリー上になります。
その他は、
・処理によっては再帰呼び出し的な個所もあります。
・オブジェクトのやり取りは殆ど参照で行なってます。
どこかのサイトで「PHPのオブジェクトは弱い」と見たことがありますが、
「弱い」というのが他言語に比べて機能的に劣っている「弱い」なのか、
動作が安定しないという意味の「弱い」なのか?
以上をふまえて
1.PHPに未知のセキュリティホールが存在する
2.現状ではコードを書き換えて対処するしかないが、その場所の特定方法
3.オブジェクトを実装する際のやってはいけない事
4.参照を使う際の注意事項
等について情報を求みます。お願いします。
2.に関してはデバッガをインストールできれば良いのですが、
Apacheモジュールを開発中でその影響か上手く動きません。
3.4.に関してはマニュアル記載の注意事項は遵守しているつもりです。
よろしくお願いいたします。
*--------------------------------------------*
Nobuyuki.KAPPA.Fukuoka
HomePage : http://kappa.kusukusu.com/
E-mail(Private) : kappa@air.linkclub.or.jp
E-mail(Business) : fukuoka@tyo.mind.co.jp
*--------------------------------------------*