PHPのPearについて質問です。


Pearのインストールについてですが、サーバーに入れて動作させるには簡単に2通りあると思います。
1.tgzやrpmでインストール
2.ファイルをコピー(別サーバーなどでうごいているモジュールなどをコピー)
そこで「2」の方法で質問です。
・Pearやモジュールを導入して動作しているAサーバー(pear listでインストールされているモジュールのリストも表示されます)
・ApacheやDBが入っているだけでPearは一切入っていないBサーバー(pear listと入れても入ってないのでエラーが帰ってきます)
AサーバーとBサーバーは同じRedhatを使用してます。
Aサーバーから/usr/share/pearフォルダをBサーバーの/usr/share/pearフォルダへコピーするとBサーバーでもAサーバーで使用していたPearの機能(mailやpager)を使用する事が出来ます。
しかしBサーバーでpear listと行ってもエラーが返ってきます。
Bサーバーのphp上で「require_once "Mail.php";」として使用出来ているのでパスも通っているように見えます。
やったことはコピーだけなのですが、なぜ使用できているのかわかる方おられたら順序だてて説明いただけると助かります。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2010/11/18 19:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント23pt

【1】PEARインストール作業で行うこと

(1)ファイルの展開

(2)pearパッケージマネージャのセットアップ

pearコマンドが使えるようになります

(3)必要なライブラリのインストール

Mail.phpなどが使えるようになります

 

【2】PEAR動作に必要なもの

PEARライブラリはMail.phpなどのphpファイルの集合体なので、必要なファイルさえ揃っていればコピーでも動作します

 

>なぜ使用できているのか

既にお気づきかもしれませんが「Bサーバの現状はパッケージマネージャを使わずに必要なファイルだけを用意した場合と同等」というのが本質問への回答になります

 

さらに付け加えておきます

【3】パッケージマネージャが無くて困ること

バージョンアップや追加を行いたいと思った場合に、

ライブラリに必要なファイルが何かを事前に調べる必要がありますので、

非常に面倒なだけでなく、phpやPEARに対して相当なスキルも必要になります

 

ただし、質問文にあげておられるように「別サーバで構築したものがある」場合には、

「別サーバのほうでバージョンアップ等を行ったものを上書きコピーする」という手が使えますから、

開発環境と運用環境の形で平行利用しているのであれば、困ることは無いかもしれません

 

http://q.hatena.ne.jp/answer

id:quocard

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

何を使うか宣言をする際にincludeで読み込みますが、当然"mail.php"と指定しても同階層にmail.phpはありません。

しかしmail.phpはincludeで有効になっています。

これはパスが通っているというような意味合いではないということでしょうか?

勘違いしていたらすいません。

2010/11/11 23:22:08
id:tama213 No.2

回答回数486ベストアンサー獲得回数30

ポイント23pt

http://blog.poyo.jp/archives/id-1162829716

これを試して見てください。

id:quocard

ありがとうございます。

私用で返事が遅れてしまいました。

今見るとページが無いように見受けられます。

2010/11/18 09:16:16
id:windofjuly No.3

回答回数2625ベストアンサー獲得回数1149

ポイント22pt

【2補足】パスが通っている理由

AサーバではPEARが正常に機能していたということなのでphpスクリプトあるいはphp.iniに「/usr/share/pearをインクルードパスとする」という設定がなされていたということになります

AサーバからBサーバにphpスクリプト、php.ini、そして/usr/share/pearを丸ごとコピーしたため、Bサーバにおいても「/usr/share/pearをインクルードパスとする」が引き継がれ、Aサーバと同じようにmailやpagerが使えてます

 

http://q.hatena.ne.jp/answer

id:quocard

ありがとうございます。

php.iniはコピーしておらずBサーバーではデフォルトの状態です。

php.iniでそういった設定をまったくしなくてもpearフォルダさえ入れればOKという感じになるのでしょうか。

そうするとパスがどの部分で設定されているのかはちょっと怪しいですね。

パスはphp.ini以外でも設定が出来るという認識でいいのでしょうか。

2010/11/18 09:18:37
id:windofjuly No.4

回答回数2625ベストアンサー獲得回数1149

ポイント22pt

>パスはphp.ini以外でも設定が出来る

 

ini-setでphpの内部からphp.iniの設定を一時的に(スクリプトが動いている間)変更することができます

http://php.net/manual/ja/function.ini-set.php

id:quocard

ありがとうございます。

ということはこういった方法でどこかでパスが設定されているということですね。

持ってきたスクリプトの中身をちょっと見てみます。

2010/11/18 13:43:48

コメントはまだありません

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

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

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

回答リクエストを送信したユーザーはいません