Bloody Mary - blog

Bloody Mary 別館

.htaccess で変更できる php の設定

php の mbstring

先日、上司から「こっちきて」とか呼ばれたので、何だろうと思って行ってみると、 blog が表示されなくて困っているとのこと。

URL を叩いてみると、確かに表示されない。じゃあということで、URL の後ろに index.php をつけてみると、問題なく表示される。

なんだ、 .htaccess の DirectoryIndex を設定すればいいだけか、 LPIC レベル 2 の勉強でさんざんやったよと思って以下のように記述した .htaccess をディレクトリに放り込んでやった。

  1. DirectoryIndex    index.php

その後、画面は表示されるようになったのだが、 Word Press の管理画面に入ると .htaccess が以下のように書き換わってしまうことが判明。

  1. # BEGIN WordPress
  2.  
  3. # END WordPress

このヤロウと思って、一個上の階層に .htaccess を作成してやった。
wordpress ディレクトリの外に .htaccess があるので、 Word Press はそのファイルを書き換えることができない。というか、しない。

これで問題は解決したかに思えたのだが、しばらくしてまた「こっちきて」と呼び出された。

またかよと思って行ってみると、今度は記事が投稿できないという症状。

おいおい、どうゆうことだよ。

このサーバの管理者権限は持っていないし、 Word Press の管理者権限も持ってないので、事象から原因を推測するしかない。

二人羽織 よろしく、もう一度上司に記事を投稿してもらう。タイトルが空白になり、本文も <P></P> とか、空タグだけになってしまっている。

オーソドックスに、設定画面をみてもらう。管理画面から設定の項目をちらほら。特にそれらしい設定項目は見当たらない。上司も、設定は変更してないという。

それを信じるなら、サーバの設定が変わったか、誰かが何かやって上位ディレクトリにある .htaccess あたりを変更してしまったかだろう。

とりあえず、設定の保存をしてもらったら、 Blog のタイトルが文字化けした。というより、入力した文字から、日本語の文字が消えて、半角英数字だけになった。

これって、日本語のエンコードとかの問題だよな、と思い、 phpinfo を作ってみた。

Directive Local Value Master Value
mbstring.http_input auto auto
mbstring.http_output SJIS SJIS

おいおい、なんで auto / SJIS になってんだ? auto はやめてくれよ。 pass にしといてくれよ。というか、前に pass にしたろ。誰か弄ったね? 父さんにもイジられたことないのに…
勝手に実験コーナー始めるなって、往々にしてオレに被害が来るんだから、コロシマスヨ?

やるなら適当なディレクトリ作ってそこで実験してね。

というわけで、 Word Press に干渉されないよう、一個だけ上位のディレクトリに、以下の内容で .htaccess を作成して、 OK 。

  1. DirectoryIndex                  index.php
  2.  
  3. php_value mbstring.http_input   pass
  4. php_value mbstring.http_output  pass

そのディレクトリでの phpinfo は次のようになった。

Directive Local Value Master Value
mbstring.http_input pass auto
mbstring.http_output pass SJIS

それを見て分かったわけ。

.htaccess で変更できる php の設定

何故、 phpinfo に「Local Value」と「Master Value」の 2 つの値を持つ設定項目があるんだろうと、前から不思議に思っていたのだけど、今回のことで感覚的に理解した。 ( 理論的に、ではない )

mbstring や mysql 、 odbc 、 session など、値を 2 つ持つ設定項目は、 .htaccess で設定をいじれるってことね。

了解。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Bloody Mary - blog © 2008 - 2021