PHP、PEARについて質問です。


XAMPPで標準についてるPEARを試すために、とりあえずDB.phpを使ってみようと思い、
「require_once("DB.php");」としてみたところ、下記のようなエラーがでました。

Warning: require_once(PEAR.php): failed to open stream: No such file or directory in D:\xampp\htdocs\cake\Test\DB.php on line 30

これは具体的には何をどのように改善したら、うまくincludeできるのでしょうか?
ちなみにphpinfo()で確認したところ、include_pathは「.;D:\xampp\php\PEAR」となっていました。

また、PEARはライブラリーとして古く使うべきではないと
どこかで聞いたことがあるのですが、それは本当なのでしょうか?
もしかわりになるライブラリーがありましたらあわせておしえてください。

環境は最新のVista Home Premium、最新のXamppのPHP5、プラウザはIE,Firefoxです。
以上、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/04/17 20:51:42
  • 終了:2010/04/21 02:37:34

ベストアンサー

id:tobeoscontinue No.2

tobeoscontinue回答回数214ベストアンサー獲得回数542010/04/20 23:39:23

ポイント52pt

include_pathがphpinfo()では「.;D:\xampp\php\PEAR」となっていたものが

Testでは「.;D:\xampp\htdocs\cake\Test」とPEARへのパスが消えてしまっていることが原因です。

その箇所が特定できるのなら

$path = "D:\xampp\htdocs\cake\Test";
set_include_path(get_include_path().PATH_SEPARATOR.$path);

のように既存のinclude_pathに追加するようにします。(現在は上書きしているのでPEARへのパスが消えた)


include_pathを設定している箇所が特定できないならrequire_once("DB.php");の前に

$path = 'D:\xampp\php\PEAR';
set_include_path(get_include_path().PATH_SEPARATOR.$path);
require_once("DB.php");

として「.;D:\xampp\htdocs\cake\Test」の後ろにPEARへのパスを追加します。


DB.phpは既に開発は止まっておりPHP4が主だったように感じています。PHP4でもクラスは使えますがPHP5とは少し違います。

またPHP4自体も開発が終了します。このような事からDB.phpは使わないほうがいいように思います。

PDOを検討してみてはどうでしょう。

データベースに特定したコードを書くわけではないのでデータベースを変更する場合に修正が少なくなることが期待できます。

id:taroemon

どうやらうまくいったようです。

また、PDOも教えていただいてありがとうございます。

さっそくこちらも勉強してみることにします。

最新のXamppではじめからついてるいるPEARが時代遅れというのは不思議な感じですね。

コメントにひきつづき丁寧なご回答ありがとうございました。


ところで、なんで『Testでは「.;D:\xampp\htdocs\cake\Test」とPEARへのパスが消えてしまっている』んでしょう?

環境PATHの設定の仕方が悪かったのか、Cake PHPがいたずらしてるのか、僕が思い当たるのはそんなところです。

どなたか時間のある時にでもコメントいただければ大変勉強になります。よろしくお願いします。

2010/04/21 02:36:27

その他の回答(1件)

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/04/17 21:01:42

ポイント18pt
peardev install DB

は実行しましたか? ご確認ください。


また、PEARはライブラリーとして古く使うべきではないと

どこかで聞いたことがあるのですが、それは本当なのでしょうか?

使うべきでないかどうかは分かりませんが、PHP5ではPEAR::MDB2 を使うことが勧められています。

id:taroemon

ご回答ありがとうございます。


この処理はしてませんでした。

さっそくコマンドプロンプトを開き、peardev.batのあったD:\xampp\phpに移動し、

peardev install DBを実行したところ、

pear/DB is already installed and is the same as the released version 1.7.13install failed

というメッセージが出ました。質問のエラーは出たままです。

どこが問題なのでしょうか?

2010/04/17 21:41:40
id:tobeoscontinue No.2

tobeoscontinue回答回数214ベストアンサー獲得回数542010/04/20 23:39:23ここでベストアンサー

ポイント52pt

include_pathがphpinfo()では「.;D:\xampp\php\PEAR」となっていたものが

Testでは「.;D:\xampp\htdocs\cake\Test」とPEARへのパスが消えてしまっていることが原因です。

その箇所が特定できるのなら

$path = "D:\xampp\htdocs\cake\Test";
set_include_path(get_include_path().PATH_SEPARATOR.$path);

のように既存のinclude_pathに追加するようにします。(現在は上書きしているのでPEARへのパスが消えた)


include_pathを設定している箇所が特定できないならrequire_once("DB.php");の前に

$path = 'D:\xampp\php\PEAR';
set_include_path(get_include_path().PATH_SEPARATOR.$path);
require_once("DB.php");

として「.;D:\xampp\htdocs\cake\Test」の後ろにPEARへのパスを追加します。


DB.phpは既に開発は止まっておりPHP4が主だったように感じています。PHP4でもクラスは使えますがPHP5とは少し違います。

またPHP4自体も開発が終了します。このような事からDB.phpは使わないほうがいいように思います。

PDOを検討してみてはどうでしょう。

データベースに特定したコードを書くわけではないのでデータベースを変更する場合に修正が少なくなることが期待できます。

id:taroemon

どうやらうまくいったようです。

また、PDOも教えていただいてありがとうございます。

さっそくこちらも勉強してみることにします。

最新のXamppではじめからついてるいるPEARが時代遅れというのは不思議な感じですね。

コメントにひきつづき丁寧なご回答ありがとうございました。


ところで、なんで『Testでは「.;D:\xampp\htdocs\cake\Test」とPEARへのパスが消えてしまっている』んでしょう?

環境PATHの設定の仕方が悪かったのか、Cake PHPがいたずらしてるのか、僕が思い当たるのはそんなところです。

どなたか時間のある時にでもコメントいただければ大変勉強になります。よろしくお願いします。

2010/04/21 02:36:27
  • id:tobeoscontinue
    PEAR.phpファイルが見つからないというエラーなので
    D:\xampp\php\PEAR\PEAR.phpが無いかどうか確認してみて下さい。

    ただインストール時には有るはずなので削除しないかぎり有るはずなのですが。
    peardev install DBでDB.phpもここD:\xampp\php\PEARに有るはずです。

    考えられるとすれば実行時にinclude_pathが変更されている可能性です。
    確認のためrequire_once("DB.php");の前にecho get_include_path();
    を追加してinclude_pathを確認してみて下さい。
  • id:taroemon
    コメントありがとうございます。
    悩んでるので非常に助かります。

    echo get_include_path();
    require_once("DB.php");
    「.;D:\xampp\htdocs\cake\Test」と表示されました。
    echo get_include_path();だけで実行しても同様の結果でした。

    どうしたら良いのでしょうか?

    他に悩んでる方の助けになる可能性があるかもしれませんので、
    もしご面倒でなければ回答欄にご回答ください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません