10月 10
Posted at 13:48 by Hiro

データベースを使ったWebアプリケーションをPHPで開発しているのですが、H2+のサイト上で簡単な動作確認をしてみたところ、「PEARのDBパッケージが見つからない」というエラーが出てしまいました。このサイトはWADAXの共有サーバーサービスで運用しているのですが、どうやらサーバーの共有スペースにはPEARパッケージがインストールされていない模様。ちなみに、専用サーバーサービスならデフォルトでPEARが使えるようです。ローカルの開発環境では、Windows上でXAMMPを使っているので気にも留めませんでしたが…。

そこで、PEARのドキュメントを参考にしながら、サーバー上のローカルスペースにPEARをインストールすることにしました。

サーバーへのアクセス手段はFTPしかないので、ドキュメントの最下部にある「ftpを通じたPEARのローカルコピーのインストール – 昔ながらの方法」の手順に従って作業していきます。

ftpを使用してPEARのローカルコピーをインストールするには、アップロード時に
ファイルのパーミッションを設定できるftpクライアントが必要です。

FFFTPを使っているので問題なし。

まず、サーバの、ウェブに公開されていない場所にディレクトリをひとつ作成し、
好きな名前をつけます。そして、全ユーザから読み書き可能 (0777) とします。

ここではサーバー上のホームディレクトリを「/home/***」と表記して話を進めていきます。ウェブに公開されているディレクトリは「/home/***/public_html」です。FFFTPで「/home/***/pear」というディレクトリを作り、パーミッションは「0777」ではなく「0707」としました。

http://pear.php.net/go-pearをダウンロードし、go-pear.phpという名前で保存します。

これはローカルでの作業。ブラウザで「http://pear.php.net/go-pear」にアクセスしてから保存するのが面倒な人は、ここを右クリックして、「名前を付けてリンク先を保存」してください。

go-pear.phpを、 ウェブからアクセス可能なディレクトリにアップロードします。
 (セキュリティのため).htaccessを使ってgo-pear.phpを含むディレクトリに
パスワード制限をかけるのが良いでしょう。 

先にウェブからアクセス可能なディレクトリを作り(ここでは「/home/***/public_html/pear」とします)、.htaccessによるパスワード制限はWADAXのコントロールパネルから設定します。その後で、保存したgo-pear.phpをFTPでアップロード。

次に、go-pear.phpファイルをブラウズします。 

go-pear.phpへのURLは「http://h2plus.biz/pear/go-pear.php」になりますね(実際には存在しないのでアクセスしないようにw)。ブラウザでアクセスすると次のような画面が表示されます。

Welcome to Go-PEAR

「Next」をクリックすると、初期設定の画面に移ります。

Configuration

変更するのは「1. Installation prefix ($prefix)」の項目だけ。画面が表示された段階では、「/home/***/public_html/pear」となっているので、「サブディレクトリを作るパーミッションがない」という警告が表示されますが無視していいです。$prefixの項目を「/home/***/pear」に書き換え、残りはデフォルトのまま「Install」ボタンをクリック。インストール処理が終わるまでしばらく待ちます。

Installation

このスクリーンショットでは隠れてしまっていますが、インラインフレームを下までスクロールすると、

Warning: Can not determine the URL of the freshly installed Web Frontend
(file: /home/***/pear/index.php).
Please access it manually ! 

という注意書きがあります。「/home/***/pear/index.php」はウェブ版のPEARパッケージマネージャで、PEARのインストール先がウェブ参照できないディレクトリにあるのが原因です。

ウェブ版PEARパッケージマネージャを使用するためには、FFFTPで「/home/***/pear/index.php」を一旦ローカルにダウンロードした後、「/home/***/public_html/pear/」ディレクトリにアップロードします。そして、ブラウザで「http://h2plus.biz/pear/index.php」にアクセスすると(繰り返しますが、実際には存在しないのであしからず)、

PEAR Package Manager

ブラウザからPEARパッケージの管理ができるようになります。

追記(2008/10/17)

PEARのドキュメントでは、インストールしたPEARパッケージが参照できるように

 
<?php
ini_set('include_path', '~/pear/lib'.PATH_SEPARATOR.ini_get('include_path'));
 
// PHP 4.3.0 以降ではこの方法も使用できます。
// これは、特に共有ホストなどで有用です。
set_include_path('~/pear/lib'.PATH_SEPARATOR.get_include_path());
?>

というコードを各PHPスクリプトに埋め込んで、インクルードパスを設定するよう書いてありますが、いちいちこんなコードを書くのは面倒です。

そこで、より自然にPEARパッケージを使えるようにするために、以下のIfModuleディレクティブを書いた.htaccessファイルを作ります。

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php:/home/***/pear/PEAR"
</IfModule>

この.htaccessファイルを「/home/***/public_html」ディレクトリ直下にアップロードすれば、サイト全体でインクルードパスを意識することなくPEARパッケージを使えるようになります。

タグ:

2 Pings to “共有サーバーにPEARをインストールする方法”

  1. 変数の内容をダンプするDumpVarビューヘルパー | H2+ Goes On Says:

    [...] 共有サーバーにPEARをインストールする方法 (569 PVs)クルクル回転するタグクラウド (410 PVs)外部サイトのリンクを別タブで開く方法 (383 PVs)WP-PostViewsの日本語化 (232 PVs)サイトマップの設置 [...]

  2. PHPでスクレイピング - Fieldnets Tips Says:

    [...] 共有サーバーにPEARをインストールする方法 [...]


2 Responses to “共有サーバーにPEARをインストールする方法”

  1. 1. 上野まりこ Says:

    いつもお世話になります。教えてください。追記のところがうまくいきません。
    php_value include_path “.:/usr/local/lib/php:/home/***/pear/PEAR”

    会社のPCで試験したら次のようなメッセージが出ました。
    Warning: require_once(HTTP/Client.php) [function.require-once]: failed to open stream: No such file or directory in /export/sd08/www/jp/r/e/gmoserver/6/5/sd0107165/sanhujinka.com/XML/PEAR.php on line 29

    Fatal error: require_once() [function.require]: Failed opening required ‘HTTP/Client.php’ (include_path=’.:’) in /export/sd08/www/jp/r/e/gmoserver/6/5/sd0107165/sanhujinka.com/XML/PEAR.php on line 29
    どうしたらよいでしょうか?

  2. 2. Hiro Says:

    上野まりこさん>
    Apacheの設定(httpd.conf)が.htaccessファイル内でphp_valueを上書きできるようになっていないのではないでしょうか?
    .htaccessファイルが置かれているディレクトリに対して、「AllowOverride Options」を設定する必要があります。

    参考サイト:
    Apache チュートリアル: .htaccess ファイル
    Apache コア機能 – AllowOverride ディレクティブ
    PHP マニュアル – 設定を変更するには

コメントをどうぞ