人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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";」として使用出来ているのでパスも通っているように見えます。
やったことはコピーだけなのですが、なぜ使用できているのかわかる方おられたら順序だてて説明いただけると助かります。

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apache dB Pear PHP RedHat
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● うぃんど
●23ポイント

【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

◎質問者からの返答

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

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

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

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

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


2 ● tama213
●23ポイント

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

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

◎質問者からの返答

ありがとうございます。

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

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


3 ● うぃんど
●22ポイント

【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

◎質問者からの返答

ありがとうございます。

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

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

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

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


4 ● うぃんど
●22ポイント

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

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

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

◎質問者からの返答

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ