3日で出来ないPHPアプリケーション……試行錯誤メモ4

PHPPEAR

3日で出来ないPHPアプリケーション……試行錯誤メモ4

 状態:不明  閲覧数:14,133  投稿日:2008-06-09  更新日:2011-01-28
[url=/modules/amazon/detail.php?asin=475615106X]<img src="http://php.w4c.work/originalSample/PHPStyleNext/images/3day.jpg" alt="3日で作るPHPアプリケーション " />[/url]
デモは、[url=http://php.w4c.work/originalSample/PHPStyleNext/3day/" target="_brank]こちら[/url]。


■目標……「3日で作るPHPアプリケーション」に掲載されているサンプルアプリ「クイッター」をレンタル共有サーバXREAで、完動させたい

■達成度……100%

■今後……随時カスタマイズを行っていく予定







■今回行った処理(概要)
a.PEARインストール
b.個々のライブラリーをインストール(Services_Amazon)
c.個々のライブラリーをインストール(Cache)
d.ファイル所有者の修正(XREA - CONTROL PANEL)


■今回行った処理(詳細)
▼a1.インストール先ディレクトリの作成
・"/public_html/"にライブラリ用のディレクトリを作成。ここでは"lib"。

▼a2.BASIC認証用の準備
・"/public_html/lib/"の中にセキュリティ用のパスワードファイルを格納するディレクトリを作成。ここでは".ht_passwd"
・"/public_html/lib/.ht_passwd/"の中に、パスワードファイルを作成。ここでは".htpasswd"。
※ベーシック認証を使ったパスワードファイル".htpasswd"の作り方
・htaccess用パスワード生成(SSL版) - ahref.org エーエイチレフ
https://verio.ahref.org/cgi-bin/htaccess/index.cgi

▼a3.htaccessの設定
・"/public_html/lib/"に.htaccessファイルを設置。
・.htaccessに下記を追記して"lib"ディレクトリにベーシック認証およびCGIモードを設定。

AuthUserFile /virtual/ユーザー名/public_html/lib/.ht_passwd/.htpasswd
AuthGroupFile /dev/null
AuthName "User and password required."
AuthType Basic
require valid-user
AddHandler application/x-httpd-php5cgi .php

▼a4.go-pearの準備
・go-pear.phpのソースをローカルにgo-pear.phpとして保存。
・"/public_html/lib/"にgo-pear.phpをアップロード。(パーミッション:755)
・"/public_html/lib/"にPEARをインストールしたいディレクトリを作成。ここでは"PEAR"。(パーミッション:707)

▼a5.PEARのセットアップ
・ブラウザ経由でgo-pear.phpを実行。
例)http://ユーザー名.サーバID.xrea.com/lib/go-pear.php
※パスワードを聞いてくるので、ログインする。
・無事ウェルカムメッセージが出たら"NEXT >>"を押す。
・"Configuration"の1番"Installation prefix"に"/PEAR"を追記。
例)/virtual/ユーザー名/public_html/lib/PEAR
・「install」ボタンをクリック
・しばらくして"Installation Completed !"と表示されればOK!
・ここで、メッセージすぐ下の"Note"にパスが記載されているので、メモ
Note: To use PEAR without any problems you need to add your
PEAR Installation path (/virtual/ユーザー名/public_html/lib/PEAR/PEAR)
to your include_path.

▼a6.PEARインストーラーの動作
・. 上記go-pear.phpの画面で"Start Web Frontend of the PEAR Installer >>"をクリックして"Webbased PEAR Package Manager on ユーザーID.サーバID.xrea.com"が表示されれば完了!
・. go-pear.phpを削除または、リネームしておく。


■メモ……躓いた箇所
▼kaukau_search.php……require cache.phpのパス設定

▼XREAのセーフモード……解除する方法
.htaccess
AddHandler application/x-httpd-php5cgi .php
・参考Copy&Paste
PHPをCGIモードで動作させる
モジュール動作だと、セーフモードなのでcacheフォルダ等にファイルを作成できずに動作しない
セーフモードでは実行ユーザとディレクトリの所有者が一致しないとファイル作成出来ない
PHPモジュールではapacheユーザとして動作しているのでNG


■発生したエラーメッセージ履歴
▼pearをインストールするディレクトリと、go-pear.phpを同じディレクトリとすることで、対応
drwxr-xr-x 2 apache apache 48 2008-06-08 17:10 bin
drwxr-xr-x 2 apache apache 48 2008-06-08 17:10 PEAR
drwxr-xr-x 2 apache apache 48 2008-06-08 17:10 temp
ディレクトリ所有者がapacheとなる。手動でディレクトリ所有者をapacheからユーザー名へ変更しても、go-pear.phpを実行した途端、tempディレクトリの所有者がapacheとなり、installボタンをクリックした途端、処理が止まり、動かなくなる

▼セーフモードを解除することで、対応
Warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 10716 is not allowed to access /tmp owned by uid 0 in /virtual/ユーザー名/public_html/online.ユーザー名.net/local_pear/PEAR/System.php on line 459

▼不明……いつの間にか表示されなくなった
Warning: Invalid argument supplied for foreach() in /virtual/ユーザー名/public_html/online.ユーザー名.net/go_pear/go-pear.php on line 208

▼pear/XML_Serializerをダウンロードすることで、対応
Failed to download pear/XML_Serializer, version "0.17.0", latest release is version 0.18.0, stability "beta", use "channel://pear.php.net/XML_Serializer-0.18.0" to install

▼pear/XML_Utilをダウンロードすることで、対応
Did not download dependencies: pear/XML_Util, pear/XML_Parser, use --alldeps or --onlyreqdeps to download automatically
pear/XML_Serializer requires package "pear/XML_Util" (version >= 1.1.1)
pear/XML_Serializer requires package "pear/XML_Parser" (version >= 1.2.6)
upgrade failed

▼tmpディレクトリのパーミッションを変更することで、対応
Warning: session_start() [function.session-start]: open(/tmp/sess_eflcjn94rdvqjus9dh0or28r44, O_RDWR) failed: Permission denied (13) in /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_search.php on line 2

▼Cacheインストール&Cache.phpへのパスを正しく設定することで、対応
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_search.php:2) in /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_search.php on line 2

▼tmpディレクトリのパーミッションを変更することで、対応
Warning: Unknown: open(/tmp/sess_eflcjn94rdvqjus9dh0or28r44, O_RDWR) failed: Permission denied (13) in Unknown on line 0

▼tmpディレクトリのパーミッションを変更することで、対応
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

▼PEARをインストールするディレクトリを、public_htmlより下に設定することで、対応
FATAL ERROR! This directory exists, but we have no write permission in it.
You can grant this permission by logging on to the server and issuing the following command:
chmod 0777 /virtual/ユーザー名/local_pear/temp

▼PEARをインストールするディレクトリを、public_htmlより下に設定することで、対応
ERROR! This directory does not exist and we can not create it. Create the directory manually or make sure we have full permission in its parent directory.
You can grant this permission by logging on to the server and issuing the following command:
mkdir /virtual/ユーザー名/local_pear/PEAR && chmod 0777 /virtual/ユーザー名/local_pear/PEAR

▼kaukau.sqliteのファイル所有者を、apacheからユーザー名へ変更することで、対応(XREA - CONTROL PANEL)
Warning: sqlite_query() [function.sqlite-query]: attempt to write a readonly database in /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_add.php on line 25

▼kaukau.sqliteのファイル所有者を、apacheからユーザー名へ変更することで、対応(XREA - CONTROL PANEL)
Warning: Cannot modify header information - headers already sent by (output started at /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_add.php:25) in /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_add.php on line 27

▼kaukau.sqliteのファイル所有者を、apacheからユーザー名へ変更することで、対応(XREA - CONTROL PANEL)
Warning: Cannot modify header information - headers already sent by (output started at /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_search.php:2) in /virtual/ユーザー名/public_html/online.ユーザー名.net/experimentation/kaukau/kaukau_search.php on line 4

▼XREA - CONTROL PANELにある「ファイル所有者の修正」を使用することで、対応
drwxrwxrwx 2 ユーザー名 hpusers 280 2008-06-09 11:49 .
drwxrwxrwx 4 ユーザー名 hpusers 456 2008-06-06 15:50 ..
-rw-r--r-- 1 ユーザー名 hpusers 43 2008-06-09 11:25 .htaccess
-rwxrwxrwx 1 ユーザー名 hpusers 3333 2008-06-09 10:20 kaukau_add.php
-rwxrwxrwx 1 ユーザー名 hpusers 4692 2008-06-09 10:15 kaukau_login.php
-rwxrwxrwx 1 ユーザー名 hpusers 3531 2008-06-09 11:49 kaukau_search.php
-rwxrwxrwx 1 ユーザー名 hpusers 2255 2008-06-09 10:14 kaukau_setup.php
-rw-r--r-- 1 apache apache 5120 2008-06-09 10:19 kaukau.sqlite
-rwxrwxrwx 1 ユーザー名 hpusers 1075 2008-06-09 10:18 kaukau_top.php
ユーザー名@ホスト名:~/public_html/online.ユーザー名.net/experimentation/kaukau> chmod 777 kaukau.sqlite
chmod: changing permissions of `kaukau.sqlite': Operation not permitted


■その他……include_pathの設定
・ルートの"/public_html/"に.htaccessを追加
・ここに先ほどのパスを元に下記を参考にしてinclude_pathを追記して、PHPスクリプトのパスを通しておく。
※これでlib内のスクリプトやPEAR内のスクリプトにパスを記述しなくても簡単にアクセスできる。Windowsの環境変数みたいなもの。
php_value include_path ".:/usr/local/lib/php:/virtual/ユーザー名/public_html/lib:/virtual/ユーザー名/public_html/lib/PEAR/PEAR"


■参考url
・xrea.comサーバにPEARをインストールする方法 - KEINOSの日記
http://d.hatena.ne.jp/KEINOS/20080212


[url=/modules/amazon/detail.php?asin=475615106X]<img src="http://php.w4c.work/originalSample/PHPStyleNext/images/3day.jpg" alt="3日で作るPHPアプリケーション " />[/url]


3日で出来ないPHPアプリケーション……試行錯誤メモ3

Services/Amazon.phpとCache.phpに関するメモ(未解決)→追記:動作的には解決しました