__constructが使えない!?

今まで動作していたPHPプログラムが使えなくなってしまいました。調べてみると、ここ最近PHPかApacheのアップデートがあったようで・・・

今まで動作していたPHPプログラムが使えなくなってしまいました。調べてみると、ここ最近PHPかApacheのアップデートがあったようで・・・

カテゴリー

おすすめサイト

RSS

__constructが使えない!?

2007/05/27 16:12

相互リンクツール

昨日辺りから、自鯖で動かしている私が作ったPHPプログラムの動きがおかしい。
さっきやはり私が作成したアップローダーを使用したら、画面が真っ白。
うーん。エラーもなにもでないのでなんだろう。と考え込んでいたけれど、原因がよくわからない。
どうも、クラスファイルをインクルードして、オブジェクトを作成するとそこでエラーになってしまうようです。
たとえば・・・

include("./testClass.php");
$obj = new testClass(); // ←ここでエラーで止まっている様子

画面になにも表示されないので、Apacheのエラーログファイルをみてみると、

Cannot instantiate non-existent class

みたいなことが書かれている。
うーん。なんだろ。
先日、友達に、自宅サーバーの利点はいろいろあるけれど、逆にすべてを自分で管理しなければならず、その辺がしんどい。
みたいな話をしてたのだけれど、ほんとこういった原因不明のトラブルに合うと、それを実感する。
今まで何らかの方法で、そういった危機を脱出してきたけれど、毎回毎回
「今回だけは無理かも・・・」
みたいな弱音がでてしまう・・・。
で、今回のエラーも、何せApacheやPHPの設定ファイルを開いたのも何ヶ月ぶり?的な大昔な事なので、全く何もかも忘れてる・・・。
とにかく昔作ったクラスファイルを読み込んで、オブジェクトにする(コンストラクタする)とエラーになるらしい。

今までも、こうした「ちょっと前まで動いてたのに、急に動かなくなる」事件は目にしてて、たぶん今回もアップデートが原因なんだろうなぁ。とにらんだのだけれど、まさしくビンゴ。
どうも5月の17日辺りにPHPの設定ファイルが新しく作成されている。

第一の原因

ひとつめの原因は、ApacheだかPHPがアップデートされて、PHPの設定ファイル「php.ini」のファイルパスが変更になったこと。
今までは「/etc/php5/php.ini」だったのだけれど、今回から「/etc/php.ini」になったらしい。
なんでこんな意味不明な、そして重要な変更するの?と思ったけれど、確か昔もこの辺が変更になってたはず。

php.iniを古いファイルに入れ替えて、Apacheを再起動。
ところが、それでも治らない。
phpinfo()関数で、データを出力してみる・・・。
すると・・・

PHPのバージョンが4に!?

なんとPHPのバージョンが4になってる!(現行は5)
なんで??
つまりPHPのバージョンが4になってしまっているので「__construct」メソッドが使用出来なくなっているというわけ。
うーん。参った。
Apacheの設定ファイルを開いて、
#AddModule mod_php4.c
のようにコメントアウトしてみる。
が、だめ・・・。
う~~~~~ん。今回、無理かも・・・。

と、ブラウザからWebminにアクセスし、aptでインストールされている

の三つをアンインストールし、Apacheを再起動してみる。
と、うまくいった!
ったく・・・なんというか・・・。
まだVine Linuxだったからよかったものの、Fedoraなんかだったらこんな簡単にいかないんだろうなぁ・・・。