includeとパス <メモとして>

PHPでプログラムを書く時、includeでファイルを読み込むことは欠かせません。しかし、相対パスで記入していると、あるカレントディレクトリのデータファイルを読み込んで処理するプログラムをそのカレントディレクターに作った場合、それを上位のディレクトリで実行すると、ファイルがありませんというPHPエラーとなります。

それを解消するには、データファイルをフルパスで読み込む必要があります。しかし、通常、ローカルの環境で試行してサーバーにアップするので、ローカルの場合は、「http://localhost/・・・」、サーバーの場合は「http://www.ドメイン名/・・・」というふうに切り替えなければなりません。

いちいちローカルで試した後、書き換えてアップしてもいいのですがこういう作業はミスを招きます。

そこで、PHPでは、実行するファイルの絶対パスを表示してくれる関数がありますのでそれを利用することにします。

使うのは、dirname()と__FILE__という関数と定数で、dirname(__FILE__)とすれば、現在のファイルの絶対パスが得られます。例えば、aaa.phpというファイルに、print dirname(__FILE__);という行を加えると、”var/HTML/abcdefg.com/web/aaa.phpのように絶対パスが表示されます。この文字のうち、ローカルのディレクトリ名に使っていない文字を抜き出してくる関数を使用します。strstrという関数は指定した部分文字があれば、その文字以降を抜き出しますが、なければFALSEを返します。したがって、if文でFALSEでなければ「http://www.abcdefg.com/ 」を、FALSEなら、「http://localhost/ 」をカレントデレクトリ/データファイルに加えれば

いいということになります。

ドメイン名:abcdefg.com
データファイル名:data.csv
データファイルのカレントディレクトリ:data
実行するファイル:ルートディレクトリのtest.php

と仮定。

test.phpに以下の記述を加えます。


他にもやり方はありそうですがとりあえず覚えとして。