[PHP-users 30288] Re: 相対パスについて

Matsumoto Taichi taichino @ naoko-takeuchi.net
2006年 9月 9日 (土) 20:04:41 JST


松本です。

tokuyama様

早速のご返信ありがとうございます。
ご教授頂きました情報を元に下記の操作を行いました。

1. ini_getでinclude_pathの確認
	[結果]
	.:/usr/local/lib/php:/usr/local/lib/php/Smarty
	"."は抜けていませんでした。

2. 駄目もとでini_setで実行スクリプトのパスをinclude_pathに追加
----修正後のコード-------------------------------
	$include_path = ini_get("include_path");
	$include_path .= ":" . getcwd();
	ini_set("include_path", $include_path);
	require_once("../dir1/script1.php");
-------------------------------------------------
	[結果]
	なんと正常に動作しました!

⇒ご教授いただきました方法により想定していた動作を
 確認できました。本当にありがとうございます。

1,2の結果から考えられるのは"."周りの動作が
おかしいということなのでしょうか。
もう少し、調査してみようと思います。


以上、取り急ぎご報告まで。

------------------------------------------------------------
        Matsumoto Taichi : taichino @ naoko-takeuchi.net
------------------------------------------------------------




"aki toku" <tokuhy @ gmail.com> wrote:

> tokuyamaです。
> 
> requireをする前にini_setなどでinclude_pathの設定をしていたりということはないでしょうか?
> その際にカレントのディレクトリの「.」を消してしまっているとか。
> script1.phptoと同じディレクトリにあるファイル(hoge.php)も相対パスで読み込めなかったりしませんでしょうか。
> require_once "hoge.php";
> 
> もしそうならini_getで現在のinclude_pathを取得しておいて追加する値に足してあげればOKです。
> 
> $include_path   = ini_get('include_path');
> $include_path  .= ':' . '/path/to/foo';
> ini_set('include_path', $include_path);
> 
> 見当違いならすいません。
> 
> 
> 06/09/09 に Matsumoto Taichi<taichino @ naoko-takeuchi.net> さんは書きました:
> > 松本と申します。
> >
> > 相対パスについて質問させてください。
> >
> > 起こっている問題はrequire_onceの中で相対パスを指定したところ
> > No such file or directoryとエラーが表示されてしまいます。
> >
> > 操作の詳細は、以下のようなディレクトリ構成の元、
> > script2.phpからscript1.phpを読み込むために
> >         require_once("../dir1/script1.php");
> > を指定したところ上記のようなエラーが発生します。
> >         ----ディレクトリ構成--
> >          ┣dir1
> >          ┃┣script1.php
> >          ┃
> >          ┣dir2
> >          ┃┣script2.php
> >         ----------------------
> > 念の為、絶対パスで試してみたところ正常に動作しました。
> >
> > 環境はレンタルサーバのためOS,Apacheのバージョンは
> > わかりませんでした。
> > OS      : Redhat Linux
> > Apache  : バージョン不明
> > PHP     : 4.3.11
> > 借りているサーバはロリポップサーバです。
> >
> > また別に以下の環境を構築し同じ操作を行なったところ問題は発生せず、
> > 想定通りの動作を確認できました。
> > OS      : Debian/GNU Linux 3.0
> > Apache  : 2.0.54
> > PHP     : 4.3.10
> >
> > WEB等で調べましても有効な情報を得られず、
> > 問題の切り分けもできていない状態です。
> >
> > 絶対パスで指定すれば動作しますので大きな問題にはなっていないのですが、
> > 解決しておかないといずれ、表面化してきそうですので、
> > 何かお知りの方がおられましたらご教授いただけますと幸いです。
> >
> >
> > 以上、宜しくお願い致します。
> >
> >
> > ------------------------------------------------------
> >         Matsumoto Taichi : taichino @ naoko-takeuchi.net
> > ------------------------------------------------------
> >
> > _______________________________________________
> > PHP-users mailing list  PHP-users @ php.gr.jp
> > http://ns1.php.gr.jp/mailman/listinfo/php-users
> > PHP初心者のためのページ - 質問する前にはこちらをお読みください
> > http://www.php.gr.jp/php/novice.php3
> >
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3



PHP-users メーリングリストの案内