__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でインストールされている
- php 4.4.7-0vl2
- php-apache 4.4.7-0vl2
- php-pear 4.4.7-0vl2
の三つをアンインストールし、Apacheを再起動してみる。
と、うまくいった!
ったく・・・なんというか・・・。
まだVine Linuxだったからよかったものの、Fedoraなんかだったらこんな簡単にいかないんだろうなぁ・・・。
| 2007/05/27 16:12 | このページのトップへ | コメントを書く | 管理


