いいかお前ら、よく聞け!

web開発/日常/etc 辞め公務員です。

VScodeでphpお問い合わせフォーム作成したいのにエラーが出てくる。パスを通したら解決した。

忘れないうちに備忘録。

 

 

VScodeでphpを実行していました。

当然サーバーもVScodeの拡張機能(php server)を使用。

 

お問い合わせフォームの作成からしてみる。

基本的にはこちらのサイトを参照しました。

 

送信をするとエラーが出ました。

Fatal error: Uncaught Error: Call to undefined function mb_language() in …

 

調べると、どうやら拡張機能?のdllが使えないデフォルトの設定になっている模様。

 

下のサイトなどを見ていると、どうやらphp.iniの設定を変更する必要があるようです。

 

 

まずは、そもそもphp.iniを作成する必要があります。

phpをダウンロードしてくると、その中に

php.ini-development

php.ini-production

が入っているはずです。

これをまるっとコピーして、名前をphp.iniにします。これでひとまず完成。

 

phpinfo.phpを作って確認してみると、

Loaded Configuratino File の値が空欄になっています。

なぁぜなぁぜ?

パスが通せていないようです。

 

スタバで隣に来た長身のお姉さんに気が散りながらも、粘っていると、あることに気が付きました。

いろいろなサイトで解決方法として、サーバー側の設定を促していること。phpはサーバーサイド言語とか言われたこと。

アパッチの設定がどうとか、そういうのは出てくる。

ということは、自分の場合はVScodeの設定ということになるのでは?

phpの拡張機能を右クリック、設定からphpserverの設定に入ります。

歯車ボタンから設定を開き検索ボックス内に @ext:brapifra.phpserver と打てば出てきます。(当然このphpサーバー拡張機能をインストール済みであることが前提)

 

中をしっかり見てみるとありました。

configのパス。

Phpserver: PHP Config Path
Path to php.ini file. If empty, the extension uses the default path.

「              」

 

これやろ!!!この空欄にパス通すんやろ!!!

さっき作った自分のphp.iniを右クリックしてパスをコピー

これをまるっと貼り付けました。

 

 

もう一度phpinfo.phpを見て開いてみると、無事にLoaded Configuratino Fileのところに、入力したパスが表示されました。

これでphp.iniを参照先に指定することができたようです。

 

ちょうど良い解説記事がなかったため、閃くまでに時間がかかりました。

 

あとはphp.iniの内容を書き換えます。

これはいろんなサイトで解説がされています。

セミコロンを外しましょう、などです。

 

で、さらに必要になったのがphp.ini内の

; On windows:
;extension_dir = "  "

の記述の確認。

コントロール+Fなどの検索機能で、extension_dir を検索すると早い。

 

拡張ファイル?のパスを通す必要があるようです。

紛らわしいのが、php.exeファイルと同じ階層にdllがたくさん並んでいますが、私が参照したいのは、php.exeと同じ階層にあるextフォルダ内のdll(php_mbstring.dll)でした。

 

こっちのパスを指定してあげないといけない。

調べたところ、パスはphp.exeから見たパスになるようです。

(本当か?あるいはphp.iniから見たパスなのかもしれないが…)

ですので、php.exeファイルと同じ階層にあるextフォルダの中を参照せよ、というパスにします。

具体的にはこう記載した。↓セミコロンを外すのもお忘れなく。

; On windows:
extension_dir = "./ext"

 

これで拡張ファイル?の参照先を指定することができた。

 

これで

Fatal error: Uncaught Error: Call to undefined function mb_language() in …

というエラーは表示されなくなりました。

 

良かった良かった。

 

 

調べてみると、プログラミングの環境構築は初心者にとって躓きやすいポイントらしい。

php自体の実行環境は既にできているためphpは動いているが、今回のようなサーバー側との設定の調整はまさしく初心者が苦しみ構築作業の一種だと思う。

私の場合先にWebRTCサーバー(Janus-gateway)をAWSのインスタンス上で動かすという作業を経験してしまっていたため、何となく設定のイメージが浮かんだことが幸いした。

ググりまくって調べても、VScodeの拡張機能でphpサーバーを使った説明 というのが一つも出てこなかったため、時間が掛かってしまった。

危うく迷路に迷い込むところだった。

 

ここまで作ってもメールサーバーの設定などが必要になる模様。

なんだが面倒になってきたぞ。

そもそも単純なお問い合わせフォームなら、グーグルフォームで事足りるのでは?とか思ったり…

とにかく、少しだけ前に進んだので…自分えらい!