アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

PHP8×CodeIgniter4 してみる

遊んでみた。
環境はWindows11のローカル環境。

「なんかあったらググる能力はあるがWeb開発詳しくない」くらいの人向け。かもしれない。
PHPは言語、CodeIgniterはPHPフレームワークです。

ダウンロード・インストール

PHP、というかXAMPPはこちら。
現時点では最新が8.1.1でした。
https://www.apachefriends.org/jp/index.html
インストーラのexeをダウンロードして実行、手順に沿って進む。

CodeIgniter4はこちら。
現時点では最新が4.1.7でした。
https://github.com/codeigniter4/CodeIgniter4/releases
zipでダウンロードしたものを適当に展開しておく。

XAMPPの動作確認

まずは最初の動作確認。
XAMPPのコントロールパネルを開いてApacheをStart。
適当なブラウザで「localhost」にアクセスしてなんか開いたらオッケー。
f:id:honey8823:20220118112859p:plain

これは何が起こっているかというと、

localhostにアクセスする

xamppのインストールフォルダ内の「htdocs」にあるindexファイル(ここではindex.php)が呼ばれる

index.phpでは「htdocs/dashboard/」にリダイレクトしている

「htdocs/dashboard/」にあるindexファイル(ここではindex.html)が呼ばれ、ブラウザに表示される

という感じ。

つまり、自分で何か作ってブラウザに表示させるには、作ったものをhtdocsに配置する…
…が定石ではあるし、そう紹介している記事が多い気がしますが。

この記事では、「ローカル環境用のURLを新しく作って、そこにアクセスされた際に何を呼び出すかの調整」でいきます。
htdocsに直接置く形でいいや…って場合は適当に読み替えてください。

URLを考えてhostsに設定する

まあ何でもいい。
ここでは sandbox.localhost とします。

メモ帳などを管理者権限で開き、
C:\Windows\System32\drivers\etc\hosts
を編集します。

最後の行に

127.0.0.1     sandbox.localhost

を付け足せばOK。

f:id:honey8823:20220118121747p:plain

URLが参照する先を設定する

hostsだけ設定しても、「sandbox.localhost」にアクセスしてみても動作は変わらないので、
次はそのURLが向く先を設定します。

XAMPPの apache/conf/httpd.conf を開きます。
コンパネからも可能。
f:id:honey8823:20220118122150p:plain

開いたら末尾に以下のような形で書き加えます。
「sandbox.localhost」の部分(2か所)は決めたURL、
「C:/dev/sandbox/public/」の部分(2か所)はindexファイルを配置するパスを指定します。

# sandbox.localhost
<virtualHost *:80>
    ServerName sandbox.localhost
    DocumentRoot "C:/dev/sandbox/public/"
</virtualHost>

<Directory "C:/dev/sandbox/public/">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

f:id:honey8823:20220118122443p:plain

保存したら、Apacheの再起動をします。
コンパネから「Stop」→「Start」でOK。
f:id:honey8823:20220118122854p:plain

URLが参照する先を設定する

さて、指定したパスに何もない場合、当然エラーになります。
動作確認用に適当なファイルを置いてみましょう。

f:id:honey8823:20220118123349p:plain

そのまま表示されればOK!!

CodeIgniterと合わせてみる

ここまででひとまずXAMPPの設定はOKなはず。
次はCodeIgniterを組み込んでみます。

先に貼っておくと公式マニュアルはこちら。
http://pneskin2.nekoget.com/codeigniter/4/build/html/intro/

展開したフォルダを開けてみるとこんな感じ。
f:id:honey8823:20220118124242p:plain
indexファイルは public/index.php になりますので、
「さっきパスを決めた C:/dev/sandbox/public/」=「CodeIgniterのpublic」
になるようにします。
つまり、「C:/dev/sandbox/」に一式を突っ込みます。

これで何かしら動くはず…と「sandbox.localhost」にアクセスしてみたものの、エラー。
f:id:honey8823:20220118132451p:plain

「なんかおかしいで」くらいしか分からないわけですが、ログ(writable\logs 以下)と公式マニュアルを見れば一発解決。

拡張機能 intl extension および mbstring extension がインストールされていることが必要となります。

とのこと。
ということでこれらを有効にしていきましょう。

まずphp.iniを開きます。
f:id:honey8823:20220118132854p:plain

intl extension については、

;extension=intl

という表記を探し、行頭の「;」を消せばOK。

mbstring extension については、

extension=mbstring

という表記を探し、行頭に「;」がついていないことを確認。(=何もしなくていい)

またApacheを再起動してアクセスしなおすと、無事にCodeIgniterのチュートリアルページが表示されました。めでたし。
f:id:honey8823:20220118133415p:plain


あとは実装して遊ぶだけなんですけど、それ書くと長くなりすぎるのでひとまずここまで。