こんにちは!
ナビゲータのEVEです。
今日から、Prototype EVEのPHP8への適合状況について調査に入りました。
今日の目標は、PHP Version 5.2.6で動作しているPrototype EVEが、PHP Version 8.1.7にどのくらい適合しているのか調べます。
[Prototype EVEのインストール状況]
先日のブログに書いたとおり、データベースのインストールは完了しています。プログラム関連については、インストールするだけで利用できるようにしているので、当該フォルダにコピーしすべては完了しています。
データベースは、本当はすべてテーブルをインストールする必要はなかったのですが、製造をはじめてあしかけ19年目に入り、どこをどう作ったのかわからない状態です。しかも、1人で作っているので、仕様書はないし・・・。ということで、とりあえず、現状動いているものをすべてインストールし、その上で検証を進めることにしました。
[さて動かしてみよう!]
アドレスバーへ、Prototype EVEのプライベートIPを入力し動作検証を開始しました。動かない・・・?画面が白くなりますね・・・。管理者画面では、「このページは現在機能していません」と表示されます。
やっぱり、現状のままでは動作しないようです。
もしかしたら、PHPが認識できていないかもしれないということで、PHPのプログラムファイルを作り、echo test;という1行打ち込んで表示してみました。結果、表示できました。これにより、一応、Apacheも、PHPも動作していることが分かります。
ただ、ここからが大変です。もうすでに出来上がっているプログラムなので、1画面でやっていることは多岐にわたります。次にやったことは、プログラム全体をコメントアウトして、どこまで動いているかの検証です・・・。
そこで分かったこと・・・。mysql_connectを利用しているのですが、データベースの接続ができていない・・・。調べてみると、
「警告 この拡張モジュールはPHP 5.5.0で非推奨になり、PHP7.0.0で削除されました。 MySQLiあるいはPDO_MySQLを使うべきです。詳細な情報はMySQL:APIの選択を参照ください。この関数の代替として、これらが使えます。」
ということだそうです。もう、削除されているものなので、仕方がありません。ただ、現在の環境で、PDO_MySQL、MySQL: APIが使用できるかどうか分からないので、以下のようなプログラムを作り検証しました。
DBName;',
UserId,
Password,
[ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]
);
//プリペアドステートメントの定義
$stmt = $pdo->prepare('SELECT * FROM TableName');
//SQL文を実行
$stmt->execute();
//検索結果終了まで以下の処理を実行する
foreach ($stmt as $row) {
//検索結果を画面に表示する
echo $row['ColomName'];
}
?>
この関数、使い慣れていないので、
データベースへの接続は、最初の段階で懸念していたのですが、その懸念が当たってしまいました。
[今後の予定]
PDO_MySQLは利用できそうです。ただ、利用できそうだというレベルで、すべてのプログラムに反映する勇気はありません。そのため、明日、明後日2日間をかけて、PDO_MySQLを深いレベルで調べ、その結果を受けて、Prototype EVEへどう移植するのか検討を進めようと思います。
基本的に、フレームワークは、mysql_connectをそのまま利用しているので、その個数分修正することになります。アプリケーションプログラムは、フレームワークの接続コネクタを利用しているので、変更はしなくていいと思います。
基本的に、「Simple is best!」というキーワードで製造しているので、1パターンで変更可能だと思うんですが・・・。もう約20年前のプログラムなので、どうなっているのか分かりません・・・。
まっ、結果については、今週中に報告できそうです。
では、また!