さくらインターネットにPEARをインストールする。
備忘録。
● ことの発端
ipadを買った。
そして、ipadで撮った写真を、ブログにアップロードできないことを知る。
ここまでが2011.12
● そこで
自分で勉強用にphpで作ってたブログを改造して、
サーバにメール添付で画像を送信すると
サーバに画像が保存されるように、コードを書き足そうと思い立った。
● メール受信でphpを起動
こちらのページを参考に設定。
CPA-LABテクニカル:「2008/05/13(火)さくらインターネットでリアルタイムメール処理」
http://www.cpa-lab.com/tech/0143
大変お世話になりました。_(_ _)_感謝。
以下、自分用メモ。
(1)さくらのコントロールパネルにログイン
(2)メールアドレスを作成「catch@example.com」
(3)「/home/user_name/MailBox/catch/.mailfilter」を編集
中身を下記にして保存。
—
cc "| /home/user_name/…/catch_photo.php"
—
「CC」でなく「to」にすれば、php起動すると消去される設定。
「chmod 600 .mailfilter」する。
(4)上記「catch_photo.php」のパーミッションは「755」にした。
(5)ソースは下記のよう。
—
#!/usr/local/php/5.2.17/bin/php-cgi
<?php
/* main routine */
?>
—
1行目の「5.2.17」はその時々で変わるっぽい。2011.12時点ではこれ。
これ以降、仕事の夏休みの終わり2日間での実施状況。
まずは、下記エラー取得で2012.08.18-19を費やす。
● phpのエラー取得
上記ページに寄せられたymfさんという方の書き込みで解決。
結論から言うと、コード内(catch_photo.php内)に、「ini_set()」を記述するということ。
例えば、
さくらのコントロールパネルの「php.ini」でどんなに下記のようにしても無為。
—
display_errors="1"
error_reporting="2047"
log_errors="1"
error_log="/home/user_name/phperror.log"
—
phperror.logには一切、メール起動のphpのエラーメッセージは記録されない。
● そこで
これを、phpコード内で
—
ini_set(‘display_errors’, ‘1’);
ini_set(‘log_errors’, ‘1’);
ini_set(‘error_reporting’, ‘2047’);
ini_set(‘error_log’, ‘/home/user_name/phperror.log’);
—
とすれば、catch_photo.php内では、上記設定が生きる。
メール起動のphpは、apache起動ではないからなのか、php.iniは見てくれてない。
とすれば、コード内で環境変数を変えてしまえば良いという。
これで、phperror.logに随時エラーが吐き出される。
● 余談
見つかったエラー。
(1) eof($fp) ・・・phpにはeof()はない。Web見ながら適当に打ってて気づかず・・・。
(2) flose($fp) ・・・ファイル遺失に。
何とも。
● 次は受信メールから画像部分を取得
するのだが、mimeとか何とか、仕様書を読むのはちょっと・・。
調べると、ライブラリを公開してくださっている方がいらっしゃり、
お前の予定!!日記「マルチパートなメールを解析する PEAR::Mail::mimeDecode をラップするクラス」
http://d.hatena.ne.jp/ya–mada/20080415/1208318475
今後使わせて頂く気満々です。
こういう有益なコードを公開して下さる方のお陰で楽しくプログラムできる。
ありがたいです! _(_ _)_
しかしそのためには、pearという、phpのライブラリらしきものをインストール要。
なにぃ。
● pearのインストール
ここまでで、昨日から始めた作業中断。
母子ともに芦ノ湖へ。2012.08.20
行きの車中、ちょいちょいpearのインストールでのエラー(下記)考え、箱根新道を行く。
● go-pear
というのがある、それは昨年末からgoogleで調べて知ってる。
とうとう、その正体が分かる。
go-pear.php
という、テキストファイルらしい。
使い方は極めて簡単らしく、テキストファイルをサーバ上に保存し、ブラウザでアクセスするだけ。
なんというweb3.0(違う気がする)。
● すると
「internal server error」と宣うわけだ。ブラウザが。
いや、「internal」だから、さくらインターネットのapacheが言ってるのだろう。
何が不服なのだ。
● 結論から言うと
パーミッションだった。所謂「777」だとエラーになる。「755」ぐらいにしとけという。
—
%chmod 755 ./php
%chmod 755 catch_photo.php
—
えぇえー、だ。
777でダメで、755でOKって。って
● って
この手のサーバではありえるよう。
777は手薄すぎるから、エラーで跳ねる設定。なるほど。
職場で一汗かいて、職場のIEでそれでも気になりすぎるから検索してから帰る。
帰ると息子は寝てて、お嫁が撮り溜めた「ほん怖」を一緒に見ようという。
見ながらパーミッションを変えると
● 「URLは見つかりません」というような
エラー。
心得ている。
● というのは
tdoiの日記:「WEBからののPEARインストール
http://d.hatena.ne.jp/tdoi/20111228/1325054820
こちらにお世話になりました。
go-pear.phpは、メンテナンスされてなくて、コード内にあるURLがかなりの量に渡り
● デッドリンク
になっているとのこと。
下記が2012.08.19時点で正しいgo-pearのソース。
http://test.fr-soft.com/files/go-pear.phps
さくらインターネットのサーバ上にコピって、またも「755」にして、
ブラウザでアクセス!
● ようやく
よくWebで見る「go-pear」の画面になる。
オプション2つは分からんがどっちもチェック。
パスの指定は1, 10が大事。
下記ページを参考にさせて頂きました。
ぼんずーず
bonnezouse
「go-pear.phpを使ってレンタルサーバにPEARをインストールする」
http://reoto.com/archives/262
1はwww配下は避ける。例えば「/home/user_name/pear」とか。
10はwww配下でないと。例えば「/home/user_name/www/…/pear」とか。
10は今後ブラウザからアクセスして設定とか行うよう。
● いまここ
10で指定したURLにアクセスしたら
google chromeが「サーバーエラー」と返してきた。
もう明日早いから寝る。
● ipadから
画像入りのブログ更新できるの、いつになるやら。
とりあえず、今の所までの半年の軌跡。