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";」として使用出来ているのでパスも通っているように見えます。
やったことはコピーだけなのですが、なぜ使用できているのかわかる方おられたら順序だてて説明いただけると助かります。
【1】PEARインストール作業で行うこと
(1)ファイルの展開
(2)pearパッケージマネージャのセットアップ
pearコマンドが使えるようになります
(3)必要なライブラリのインストール
Mail.phpなどが使えるようになります
【2】PEAR動作に必要なもの
PEARライブラリはMail.phpなどのphpファイルの集合体なので、必要なファイルさえ揃っていればコピーでも動作します
>なぜ使用できているのか
既にお気づきかもしれませんが「Bサーバの現状はパッケージマネージャを使わずに必要なファイルだけを用意した場合と同等」というのが本質問への回答になります
さらに付け加えておきます
【3】パッケージマネージャが無くて困ること
バージョンアップや追加を行いたいと思った場合に、
ライブラリに必要なファイルが何かを事前に調べる必要がありますので、
非常に面倒なだけでなく、phpやPEARに対して相当なスキルも必要になります
ただし、質問文にあげておられるように「別サーバで構築したものがある」場合には、
「別サーバのほうでバージョンアップ等を行ったものを上書きコピーする」という手が使えますから、
開発環境と運用環境の形で平行利用しているのであれば、困ることは無いかもしれません
ありがとうございます。
私用で返事が遅れてしまいました。
今見るとページが無いように見受けられます。
【2補足】パスが通っている理由
AサーバではPEARが正常に機能していたということなのでphpスクリプトあるいはphp.iniに「/usr/share/pearをインクルードパスとする」という設定がなされていたということになります
AサーバからBサーバにphpスクリプト、php.ini、そして/usr/share/pearを丸ごとコピーしたため、Bサーバにおいても「/usr/share/pearをインクルードパスとする」が引き継がれ、Aサーバと同じようにmailやpagerが使えてます
ありがとうございます。
php.iniはコピーしておらずBサーバーではデフォルトの状態です。
php.iniでそういった設定をまったくしなくてもpearフォルダさえ入れればOKという感じになるのでしょうか。
そうするとパスがどの部分で設定されているのかはちょっと怪しいですね。
パスはphp.ini以外でも設定が出来るという認識でいいのでしょうか。
>パスはphp.ini以外でも設定が出来る
ini-setでphpの内部からphp.iniの設定を一時的に(スクリプトが動いている間)変更することができます
ありがとうございます。
ということはこういった方法でどこかでパスが設定されているということですね。
持ってきたスクリプトの中身をちょっと見てみます。
回答ありがとうございます。
何を使うか宣言をする際にincludeで読み込みますが、当然"mail.php"と指定しても同階層にmail.phpはありません。
しかしmail.phpはincludeで有効になっています。
これはパスが通っているというような意味合いではないということでしょうか?
勘違いしていたらすいません。