【CodeIgniter】dockerで構築したらform_openのurlがおかしくなった件
dockerでcodeigniterの環境を作っていて、公式チュートリアルをやっていたところform_openというメソッドを使うとURLがおかしくなってしまう、という現象に出くわしました。
form_openというのは、formを生成してくれるCodeIgniter独自の関数です。
どのようにおかしくなったかというと、formのactionのURLが想定していたURLと違ったんですね。
というのも、私が立ち上げていたapacheのIPは「localhost:1111」。
つまり、actionのURLも「localhost:1111〜」となるのが望ましいです。
しかし、action属性を見てみると次のようなURLになっていました。
このform_openという関数はconfig.phpのbase_urlを基準にURLを決定するらしく、確かにconfig.phpを見てみると何も記載してありませんでした。
$config['base_url'] = '';
そのため、下記のようにbase_urlを指定してあげたところ問題なくURLが指定したURLに置き換わりました。
$config['base_url'] = 'http://localhost:1111';
さて、「192.168.128.3ってなんぞ?」と思っていたのですがなんだか見覚えが…
とりあえず、apacheのコンテナに入って「hostname -i」でIPを調べたらまさにこの番号でした。
つまり、何も指定しないとdockerのコンテナのIPがbase_urlになってしまうということなんですね。
初めてCodeigniter触りましたが、今のところLaravelやCakePHPよりも自由度が高そうな感触。
とりあえず何か作ってみようかな…