メールフォームをPHP7対応に
名古屋カラオケサークル及び名古屋アニソンカラオケサークルで、会員登録や歌会の出欠連絡、お問い合わせに使っているメールフォームをPHP7に対応させるためのプログラム修正作業を行いました。
このメールフォームはPHPと言うプログラミング言語で書かれたプログラムですが、プログラミング言語はバージョンアップして、新しくなっていきます。PHPも例外ではありません。と言うか、PHPはどんどん進化しています。
このメールフォームはPHP 4.3.2に基づいて組まれたプラグラムですが、記録によると、PHP4.3は2002年12月27日にリリースされたバージョンです。PHP4.3.2は2003年5月29日にリリースされています。
現行のPHPのバージョンは、すでにPHP7.xになっています。最新版は、2020年1月23日リリースの7.4.2です。昨年11月27日に7.4.0が出たばかりでしたが、もう7.4.2なんですね。ずいぶんバージョンアップの進行が速いですね。
セキュリティー上の問題もあるので、何とか早く、メールフォームとアクセス・カウンター(これもPHPです。たぶんPHP5.2.0か5.2.1ぐらいか?)をPHP7に対応させるべく、プログラムの修正を行わないといけないという状況にありました。わかりやすく言うと、たとえば・・・
Windows 7からWindows 10になったので、Windows 7のソフトが使えなくなりました。Windows 7のままだと、セキュリティー上の問題が出てきて、危険ですよ。早くWindows 10にバージョンアップすると共に、ソフトの方もWindows 10対応のバージョンにバージョンアップしないと危険ですよ。
・・・と言うような感じです。
まあ、他にも理由はあるのですが・・・。
問題は、私はプログラマーではないので、そんな事知るか・・・と言うわけにも行かず、プログラミングに詳しい専門のプログラマーのメンバーに意見を聞いていました。あいにく、PHPのプログラマーはいません。と言うか、いても、そんな面倒なことをはなかなか頼めません。
私がPHP7を覚えて、自分でプログラムの修正をするのがよいか、それとも、PHPの専門のプログラマーに頼んだ方がいいのか・・・それが問題でした。
答えは、専門のプログラマーに頼んだ方がいいということになったのですが、さて・・・お金が(笑)。
そうも言ってはいられないので、頼むことにしたのですが、もしかしたら、がんばれば自分でできるかもしれないと思い、がんばってみることにしました。
星野さん、どういうプログラミング言語をご存じですか?
KONJO 2.0です(笑)。
根性以外の言語を知らない私ですが、がんばりました。まず問題点を洗い出すために、プログラムチェックのソフトをインストールしようと思いましたが、どうやら、Linuxという無料OSが必要らしいのです。そこで、Linuxのインストール方法を調べると、8GのUSBメモリーが必要らしいのです。
買ってくるしかないですね。
で、買ってきました。Linuxについて調べると、わお~。いろいろあるじゃあないですか?どれにしたらいいのかな・・・?
Ubuntuでいいや。シェア最大らしいし。
で、Ubuntuを調べたら、いろいろいっぱいあります。わお・・・。
まあ、公式サイトのでいいや。
そうしたら、CPUのメーカーごとに別々になっている(笑)。AMD???何じゃそれ?
あぁ、そういえば、そういうCPUメーカーがありましたね。なぜAMD版が一番上で、それ以外が下なのか謎ですが、そういう文化なのでしょうね。
そういうわけで、下のやつを選びました。32ビットだし。
早速、ダウンロード開始。あれ?どこにダウンロードするんでしょうか?USB?HD?
あれこれ試行錯誤した結果、どうやらHDにいったんダウンロードして、その後、USBに転送するらしいです。起動ディスクにするための措置らしいです。
そういえば、起動ディスクにするには、パーティションを切って、マークしないとだめだったような気が・・・。
とりあえず、HDにUbuntuのダウンロードを開始しました。所要時間を見ると、5日とか10日とか・・・(笑)。これは死にますね。しばらく見ていたら、ダウンロード速度が速くなってきて、数時間ですみそうでした。これが1.6Gあるんです。
暇だ・・・。・・・。・・・。
待ている間に、やれることをやってみようと思い、プログラムをテキスト・エディターで開けて、中身をじっくり見てみました。
PHP7で動かないと言うことは、廃止になった関数があるに違いないと思い当たりました。調べたところ、eregと言う関数群が全部廃止になっていました。
プログラムを検索すると、eregがいっぱいあります。eregはpreg_matchに変更されたという仕様変更文書を発見したので、早速、eregを全部preg_matchに置き換えました。
何だ、ずいぶん簡単ではありませんか。これで動くはず・・・。
動かない。
わお。どうしようか。どこが間違っているのでしょうか?
preg_matchの後の記述方法が違うのかも。
そこで、実際にメールフォームを記入してみて、出てきたエラーメッセージを見て、再度、プログラムを分析してみました。
間違っている可能性がある場所が見つかりました。恐らく、記述の仕方が違うのでしょう。
そこで、各部分で何をやっているのか考えてみて、その部分を専門のPHPプログラマーがどういうふうに実装しているのか、いろいろ当たってみました。人により、やり方はいろいろあるみたいでした。
そこで、こちらのメールフォームに合いそうなものを改変して、当てはめては、実験してを繰り返しました。
そして、やっている内に、だんだん要領がわかってきました。要するに、文字列の前後にスラッシュを入れれば、動作するみたいでした。
と言うわけで、全部の文字列の前と後に/を入れてやりました。
完全に動きました。
そういうわけで、無事解決しました。しかも、何とLinuxをダウンロードし終わる前に、解決してしまいました。
めでたし、めでたし。8GのUSBメモリー代は痛い出費でしたが、PHPのプログラマーに依頼するよりも安くすみました。
アクセス・カウンターのプログラムの修正もありましたが、こちらはphp.iniの編集で瞬間的に直せてしまいました。
何しろ、私のプログラミング言語はKONJO 2.0ですから。
参考にしたページ:
Backward incompatible changes
Migrating from PHP 5.6.x to PHP 7.0.x
PHP7で廃止された関数
[PHP] PHP7でsplit関数は削除されたから…
ereg
split
preg_split
【PHP入門】split関数を使わないでpreg_splitやexplode関数を使おう!
正規表現:すべて半角数字かどうか調べる
PHPで数値をチェックする4つの方法を比較
trim
PHP 4 ChangeLog
PHP 5 ChangeLog
PHP 7 ChangeLog
mb_internal_encoding
PHPでエスケープが必要な時と方法を最短理解!
PHP で「全角ひらがな」や「全角カタカナ」かチェックする
正規表現 PHPのpreg_match色々(全角や漢字も許可など)
PHP ひらがな カタカナ 漢字 半角英字 全角英字 を判定(チェック)
マルチバイト文字を扱う際に気をつけること
PHPまとめ – 日本語を扱う
すべて半角英字かチェック
正規表現:すべて半角数字かどうか調べる
すべて「ひらがな」かどうか調べる ※これは極めつけでした。
ctype_alnum
以上です。
これだけ読んだら、何となくわかりました。
ディスカッション
コメント一覧
まだ、コメントがありません