フォームに全角や日本語を入力すると消えてしまうときに疑うこと

お問い合わせフォームとかで、フォームに日本語や全角テキストを入力すると、うまくPOSTできずに消えてしまう事案が発生。

原因は、phpの文字コード設定にありました。







php.iniの設定を見る

既にphp.iniがサーバーによって用意されている場合は、php.iniを確認してみましょう。

php.iniの場所がわからないときは

現在読み込まれているphp.iniは、phpinfo()によって確認できます。

info.php等適当なphpファイルを作り、以下のようにコードを書きます

書いたらファイルをFTPでサーバーにアップし、ファイルにアクセス。

すると、現在利用されているphpの情報が表示されます。これは使う機会が多いので覚えておきましょう

上の画像が、現在読み込まれているphp.iniです。

php.iniの場所がわかったら、FTPでphp.iniをダウンロードし、ファイルを開きます。

下記のような部分があったら修正しましょう

修正したらアップし、フォームの動作を確認してください。



別のphp.iniがある場合

あれれ?サーバーが用意したphp.ini以外にも、ルートディレクトリなんかにもphp.iniがあるぞ?

という場合が稀にあります。たぶん、WordPressを使うにあたってサーバーのデフォルトのphp.iniじゃ話にならないので、誰かが新たに自前のphp.iniを追加したんでしょうね。また、サーバーによってはもとからここに置いてある場合もあります。いろいろ大人の事情があるんでしょう。

まずはその別php.iniを開いて中身を読んでみて、’mbstring.internal_encoding = UTF-8‘という内容が書かれているにも関わらずエラーが出る場合、なんらかの理由でこのphp.iniが読み込まれていない可能性が高いです。

前章で説明したphp.iniの場所探しで、この別php.iniが読み込まれていない場合、.htaccessを見てみてください。

下記のような表記があるでしょうか?あるかもしれませんし、ないかもしれません

このコードは、別php.iniを読み込むためのコードです。

ない場合は追加しましょう。php.iniが置いてある場所を絶対パスで指定します。

ある場合は、内容が間違っていないか確認します。

絶対パスがわからないときは

適当なphpファイルに下記コードを書き、アップしてアクセス。

WordPressを使っている場合は要注意

で、今回なんでこんなエラーが出たかというと、WordPressでパーマリンクを変更した際に.htaccessが上書きされ、php.ini読み込み部分のコードが消えてしまったのが原因です。

なかなかホラーですよね…

何かサイト全体、もしくはフォームに影響がありそうな変更があった場合はフォームの動作確認を必ずしましょう。特にコンバージョンに関わる部分にエラーが出るとやばいですからね。。

がんばれWordPressマン!

シェアする

フォローする