









2010年 2月 10日
メルマガをWordPressでできないか?ということについて、以前に調査していたのだが、やりたいことに該当する方法ではなかったので、オープンソースのメルマガ発行ソフトのPHPListを使うことにしようかと思って調査したのでメモ。ちなみにWordPressとPHPListを繋ぐPHPList Form Integrationというプラグインがあるのでこれを使う予定。
参考にさせていただいたサイト
ではいきまーす。
- まずはここからPHPListの日本語化されたものをダウンロード。
http://www.d-ip.jp/download/pivot/entry.php?id=14
- ダウンロードしたファイルを解凍し、public_html直下にあるlistsディレクトリをWordPressと同じディレクトリに入れる。
- lists/config/config.phpを修正する。インストールするデータベース名、データベースユーザ名、パスワードなどを修正。ここはWordPressと同じものでOK!!あとPLUGIN_ROOT_DIRが原因でエラーが出てたので、コメントアウトしておいた(この辺りはよくわかってない)。TESTの値も0にしておく(そうしないとメール送れないので。後で0にしてもよい。)
- PHPがsafe modeで動いてると問題があるかもね!というメッセージが出続けるので、CGIモードで動かすために、lists/admin/.htaccessに以下を追加する。
AddHandler application/x-httpd-phpcgi .php
- CGIモードで動くとphp.iniの情報が変わってしまうので、独自に設定するためにlists/admin/以下にphp.iniを作成する。
magic_quotes_gpc = On
register_globals = Off
session.auto_start = Off
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
# /tmp以下にセッションファイルが作れないというエラーが出たので、
# 自分のディレクトリ直下にtmpを生成しておくこと
session.save_path = "/virtual/********/tmp"
- http://自分のWordPressのドメイン/lists/admin/にアクセスし、PHPListをインストールする。
- 管理者のパスワードを変えておく。
- インストールが問題なく終わったら、サンプルでインストールされているリスト(メルマガのこと)をアクティブにしておく(WordPressのプラグイン経由でPHPListを使うため)。
- CORESERVERのcronを使ってメルマガ配信するために、シェルスクリプトを作成する。名前はphplist.shとした。
#!/bin/sh
wget -q -O - 'http://自分のWordPressのドメイン/lists/admin/index.php?page=processqueue&login=管理者名&password=パスワード' >/dev/null
このファイルは/virtual/********/phplist.shに置いた。実行権限を与えておくこと(705)。
- CORESERVERのcronに/virtual/********/phplist.shを登録する。
普通のサーバのcronならば、
*/15 * * * * /virtual/********/phplist.sh
でよいと思うのだが、CORESERVERでは分に入力できる文字列が2文字までみたいなので、*/15と入力できなかった!やっていいのかどうかはわからないが、4行分使って、
0 * * * * /virtual/********/phplist.sh
15 * * * * /virtual/********/phplist.sh
30 * * * * /virtual/********/phplist.sh
45 * * * * /virtual/********/phplist.sh
と設定しておいた。
これで15分毎にチェックされ、キューに入っているメルマガが15分毎に配信されるはず。
さっきまで試していたことなので、だいたい合っているはず。
WordPressのプラグインであるPHPList Form Integration
の設定については後でまた書きたいと思う。










2010年 2月 4日
MBFpdfでバグを発見した!!バージョンは1.0b。
["](ダブルクォーテーション)が出力できないというものだ。
$l+=$ascii ? $cw[$c] : $hwkana ? 500 : 1000;
上のソースの$cw[$c]の$cにダブルクォーテーションが入ってるのだが、
undefined index ” と言われてしまう…。
そこで、$cwをprint_rで表示してみたら、
array(…,[\"] => 500, …);
という記述を発見。ダブルクォーテーションあるけれど、バックスラッシュでエスケープされてるじゃないか!?まあこれが正しいと仮定した場合、$cw["]は定義されていないわけだから、$cが["]の場合、$c = ‘\”‘;にしてしまえばいいんじゃないかと思ったので、mbfpdf.phpに手を入れることを決意!!
MBMultiCellメソッドを修正。
//Get next character
$c=$s[$i];
// 以下3行を追加
if($c === '"'){
$c = '\"';
}
その後、MBWriteメソッドを修正。
行番号は、上記の作業後なので、この付近と思ってください。
//Get next character
$c=$s[$i];
// 以下3行を追加
if($c === '"'){
$c = '\"';
}
こうしたところ、ダブルクォーテーションがPDFファイルに出力できた。










2010年 1月 20日
PHPでssh2を使う必要が出てきた。
方法としては、PECL::ssh2をインストールしておけばよいらしい。
依存ライブラリとして、libssh2が必要なので、yumにてlibssh2をインストールしておく。
libssh2-develはいらないかもしれない。
yum -y install libssh2 libssh2-devel
その後、peclコマンドでssh2拡張をインストールする。
pecl install ssh2
downloading ssh2-0.11.0.tgz ...
Starting to download ssh2-0.11.0.tgz (22,884 bytes)
........done: 22,884 bytes
5 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
1. libssh2 prefix? : /usr
1-1, 'all', 'abort', or Enter to continue: all # libssh2.soへのprefixが/usrではない場合、修正
libssh2 prefix? [/usr] : /usr/lib
1. libssh2 prefix? : /usr/lib
1-1, 'all', 'abort', or Enter to continue: # 何も入力せずにenterを押す
# インストールが始まる
...
# インストール完了通知
Build process completed successfully
Installing '/usr/lib/php/modules/ssh2.so'
install ok: channel://pear.php.net/ssh2-0.11.0
ssh2.soがインストールされたので、権限を変更する
chmod 755 /usr/lib/php/modules/ssh2.so
php.iniを修正してextensionを組み込む。自分の環境では、extensionの組み込みが外部ファイル化してあったので、そちらを修正する。gd.iniとかをコピーしてssh2.iniを作り、それを修正した。その後は、apacheの再起動を行う。
cd /etc/php.d
cp gd.ini ssh2.ini
vi ssh2.ini
# gdをssh2に変更
extension=gd.so
↓
extension=ssh2.so
# 編集終了
# apacheの再起動
service httpd restart
これで、phpinfo()を確認したところ、ssh2が組み込まれていたのでOK!!










2010年 1月 13日
仕事の関係で、メルマガを発行する方法を調査する必要が出てきた。
それをWordPressのプラグインで行う方法を調査中。
調査結果などをチョコチョコとメモしていく。
subscribe2というプラグインを使うのがよさそう。
というか、会社の他の人からこれはどうだろう?と言われたので、調査することになったんだけど。動作の検証環境として、自社の開発サーバのWordPressにsubscribe2を突っ込んでみたが、動かず。
原因は、WordPressをインストールしているサーバにメールサーバを立ててないから。普通はメールサーバも入ってるレンタルサーバとかにWordPressをインストールするだろうから、あまり問題にならないケースではあるが、うちらの開発環境としては問題有りだと。
cform2の場合は、環境設定でSMTPサーバを使うように設定できたのでよかったのだが、どうもsubscribe2はできなさそう。それを補完するプラグインが、WP Mail SMTP。このプラグインを使うと、WordPressから送るメールを全てSMTPサーバ経由に設定できるみたいですな。
subscribe2は、基本的には投稿があったときにメルマガユーザに投稿が合った旨を通知するのがメイン機能のプラグイン。一応メルマガの真似事はできるのだが、メルマガの過去ログが残らない。運用で、カテゴリにメルマガというのを作ってメルマガはそのカテゴリの投稿のみ送られるようにするという方法もあり得るとは思うが、多少面倒に感じる。テンプレートいじらないとダメだし。まあ楽なもんかもしれんけど…。
それをメルマガの真似事の機能を使って、WP Mail SMTPプラグインを使ってGmail経由で送ると、送信済みメールとしてメルマガの過去ログを残せるという副次的な効果があるようだ。Gmailのアカウントを取らないといけないが、これはこれで使えるノウハウだなと思った。
ひとまず、調査報告終了です。
コメント