Scribble at 2021-12-03 11:58:56 Last modified: 2021-12-08 17:44:46

添付画像

知らないあいだに CodeIgniter がバージョン4となっていた。もともと使っていた PHP のフレームワークだったのだが、例のライセンスに関わる騒動があって KohanaPHP がフォークした際に、僕は KohanaPHP のサポーターとして CodeIgniter を使うのは止めてしまったため、それから暫くは情報を熱心に取ってこなかった。ただ、KohanaPHP が開発を終了した5年前の時点では、広告代理店案件で僕が関わっていた作業と言えば、アホみたいに古い Movable Type のテンプレートを作ったり WordPress をカスタマイズしたりという CMS に絡んだ事案が多く、要するにフレームワークだろうとなかろうとオリジナルのシステム開発をするほどの複雑な与件もなければ、上場企業であれ大企業であれクライアントにウェブ・アプリケーションを自前で開発するだけの予算もなくなってきたわけである(必要もなかったと言っていい)。なので、わざわざ PHP のフレームワークを使う案件すらないのだから、せっせと情報を頻繁に更新する職責もないわけである。

とは言いながらも、頻繁に使っていて慣れているフレームワークの現状くらいは、たまにフォロー・アップしておきたいのが人情というものである。なので、久しぶりに CodeIgniter をダウンロードして、ローカルの環境で動かしてみる。

まず環境を示すと、Windows 10 Home、Apache 2.4.48、PHP 8.1.0 という構成だ(PHP はさきほどアップデートしたばかり)。CodeIgniter は 4.1.5 である。CodeIgniter のドキュメントにはインストールの手順として composer でもマニュアルでもいいと書いてあるが、僕はマニュアルを勧める。なぜなら、composer でやってみたところ必要なフォルダ(しかも致命的に重要な /system フォルダ)が入らないため、そもそも何が必要なのか知らない初見のユーザにとっては大きな不安を与えるからだ(そして、それは composer の手順がスケルトンの作成手順だからだ。既に /system がどこかにあるという前提でプロジェクトを追加するだけだから、/system が不要ということなのだろう)。サル専用に作ってる自動ツールのくせにバカだなぁ。なので、真のシステム開発者というものは、Windows での作業だろうと、こんなツールに頼ってはいけない。ひとたび問題が起きると、何がおかしいのか原因を突き止めるのにかえって過剰な手間がかかる。

公式サイトから CodeIgniter をダウンロードしたら、おもむろに好きなところへ展開する。僕の場合は、C:\dev\test 以下に展開した。そうすると、ごちゃごちゃとぶちまけることになるが、結局 CodeIgniter が動作するにあたって必要なのは、

/app

/public

/system

/writable

というフォルダだけだ。それ以外のファイルや /test のようなフォルダはマニュアルで運用する人間にとっては不要なので、削除してしまおう。ゴミがあると問題が起きた時の原因を探すのに邪魔になる。

次に、Apache の設定で /public を DocumentRoot として設定して、VirtualHost を使っているなら hosts ファイルに登録してあるホスト名、たとえば 127.0.0.1 test.localhost などの VirtualHost を定義しておく。これで httpd のプロセスを再起動してみよう。すると・・・

たぶん、大多数の Windows 環境ではエラーが出る。"Whoops!" とかなんとか、デカいアホみたいなページが出る筈だ。これは、何か設定で問題が起きているのに、ディフォールトでは "production" モードとして動作しているために、エラーを表示できないため、代わりとして表示されている。実際にブラウザ上でエラーとして状況を表示させるには、"production" モードを "development" モードなどに変更する。これは、CodeIgniter のドキュメントでは ".env" ファイルがどうのとわかりにくく書いてあって、初心者は絶対に混乱すると思うのだが、".env" なんてファイルはない。そんなの、どうでもいいのだ。彼らは、つまり「ウェブ・サーバの設定ファイル」というつもりで、Apache なのか Nginx なのか IIS なのかを特定しない言い方で ".env" などと書いているだけなのだ。それゆえ、Apache の環境では、もちろん .htaccess か httpd.conf のような設定ファイルに、

SetEnv CI_ENVIRONMENT development

といった、環境変数を定義するディレクティブを使えばよいのである。

それでやっとエラーがエラーとして表示される。恐らく、出てくるエラーは "The framework needs the following extension(s) installed and loaded: curl, intl." のようなものだろう。これは、多くの PHP ユーザにとっては混乱を招くものだ。なぜなら、"php -m" のようにコマンドを打ち込んでも、ちゃんと curl や intl のモジュールは読み込まれているからである。でも、phpinfo() の出力内容を見れば、全く設定が反映されていないことが分かるので、何かがおかしいということに気づく。かようにして、curl モジュールに関連するエラーは、特に Windows で PHP を使うときによく起きる。そして、その対処方法は、php.net に書いてあるような Pecl へ行って curl.dll をダウンロードするとか、そんな石器時代の(そして、いまや正しくもない)手順ではない。正しい方法は、皮肉にも php.net でコメントにさらっと書いてあるのだが、幾つかの .dll ファイルを追加したりコピーすることである。

従来は、Windows の「システム・フォルダ」、つまり C:\Windows\system32 に、OpenSSL に関連するファイルを二つだけ追加しろというのが定番だった。しかし、もう今ではこれも正しくない。少なくとも2021年12月の時点では、

・libeay32.dll

・ssleay32.dll

この二つは OpenSSL のサイトからビルド済のファイルをダウンロードする。

・libssh2.dll

そしてこれは、PHP のインストール・フォルダに最初から入っている。これら3つのファイルを、いまは Apache の実行パスに追加するのだ。つまり、Windows なら httpd.exe が入っている場所である。そこへ3つのファイルを追加してから、httpd のプロセスを再起動すると、ようやく CodeIgniter の標準的なウェルカム・ページが表示されるはずである。

もちろん、こんなことを何もトラブルなしにサラッと書いているわけではなく、試行錯誤を1時間ほどやった結果を、あたかも滞りなく作業が進むように書いているだけだ。でも、こういう頭にくる面倒な作業なんて、誰もやらなくてよければやらなくていい。そのためにこそ composer のようなガジェットがあるというのに、これが信用できないのだから、我々のように(有能とまでは言わないが)CodeIgniter の扱いに慣れている人間が率先して行い、その結果を出さない限り、誰もこんな面倒臭いエラーをなんとかしないと使えないツールなんて気軽に使おうとしないだろう。

あと、インストールについては以下のようなページを見つけたのだが・・

http://blog.a-way-out.net/blog/2021/12/02/how-to-install-codeigniter-415/

こんな面倒なことをしなくては動作しないなんて、これでは CodeIgniter の気軽に入れて使えるメリットが台無しだ。brew だ composer だと、システム開発にとって本質的には余計でどうでもいいガジェットを前提にファイルやディレクトリを展開する方法しか説明しないなんて、わざとハードルを上げてコンサルやライターとしての既得権を守ろうとしているようにしか思えんね。そんなことをしてるから、日本のユーザ会も崩壊して、他の同じ程度に面倒臭いフレームワークと区別がつかなくなって廃れるのだ。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook