php.iniの修正内容が反映されない!例えば、php.iniでinclude_pathを指定しても、phpinfo()で確認すると自分が指定していない「include_path='.;c:\php5\pear'」になってしまう、という場合に考えられるいくつかの原因

例えば、php.iniで、

include_path=".;c:\php\pear"

と指定していても、phpinfo()で「include_path」の設定値を確認すると、自分が指定していない

include_path='.;c:\php5\pear'

になっている、ということがある。

include_pathの設定に限らないが、php.iniの設定が反映されない場合、普通(?)よくあるパターンが以下だと思う。

1)php.iniの設定を変更したのにApacheを再起動していなかった。
 →Apacheを再起動したら、php.iniの設定変更が反映される。

2)修正したphp.iniファイルが、全く関係のないファイルだった。つまり、PHPが読み込んでいるphp.iniファイルは、どこか別の場所に格納されており、それに気づかないまま、たまたま見つけた関係のないphp.iniファイルを修正してしまった。
 →phpinfo()でどのフォルダ内のphp.iniを読み込んでいるかを確認すれば、解決する。

《例》WindowsのC:\Windows配下にphp.iniを設置した場合のphpinfo()での表示例

Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\WINDOWS\php.ini


 →実は、どのphp.iniもPHPが読み込めていないのであれば、読み込めるようにする。(PHPから見た時に、どこにphp.iniが設置されているのかを認識できていない、ということはよくある。)
 ※Windows環境であれば、C:\Windows配下にphp.iniを設置すると、認識してくれる。

3)Windows環境だと、php.iniの設置場所によっては、設置場所のphp.iniを直接修正しても修正内容が実は保存されていない。
 →Windows 7、Windows Vistaではよくあること。
  デスクトップ等でphp.iniファイルを修正した後、本来設置したい場所にコピーすると良い。

これまでは、この3つのパターンしか思いつかなかったが、最近、4つ目のパターンがあることに気付いた。

4)新たにPHP設定を記述した行よりも前の行で、PHPの設定記述に誤りがあった。
→最近、コレに少しはまった。

何かの設定が悪かったのか、Apacheのエラーログにも記録されないし、ブラウザで表示した時にもエラーが表示されなかったので、php.iniの記述には間違いがないのだろう、と断定し、さて、どうしようか、と八方ふさがりになりつつあった。

その時に、ふと思いついて、コマンドラインで(Windowsのコマンドプロンプトで)PHPを実行すると、PHPエラーが表示された。

○行目でエラーが出ている、ということまで記載されていたので、php.iniの該当行を確認すると、PHPの設定の記述の仕方が間違っていたことに気付いた。

この間違っていた行は、include_pathの記述よりも遥かに前の行だったので、include_pathの設定を何度も確認している時には、視界に入っていなかった。

PHPの動きとしては、新たに設定した記述(今回の例では「include_path」)よりも前に登場したPHP設定の記述において、記述の仕方が間違っていると、それ以後の設定は受け付けない、といったことになっているのかもしれない。

掲題の件だが、php.iniでinclude_pathを指定しても、phpinfoで確認すると自分が指定していない「include_path='.;c:\php5\pear'」になってしまう原因の1つとしては、今回は、include_pathを記述した行よりも前の行で、PHPの設定記述に誤りがあった、ということになる。

PHPとしては、(PHP5の)include_pathの初期値は、「'.;c:\php5\pear'」なのかなぁ。

今後も「php.iniの修正内容が反映されない!」という問題に遭遇した場合には、上述の1)〜4)項目のすべてを考慮することにしよう、と思った。まだ、これ以外にもハマリ・パターンがある場合は、このブログに追記するかも。

  
 

前へ

Linuxのcrontabで設定したスケジュールが実行されるたびにメールを送信する方法

次へ

「エッチ スケッチ ワンタッチ あなたのおっぱい何センチ?」が松山市の幼稚園では流行っているらしい