- んっ cronでpearが動かない!?
- 2010.05.27
ブラウザから起動すると正常に動くプログラムがcronだと動かないというのはたまにある現象だし、今までは殆どの場合、パスの違いが原因でした。
今回、pearをcronで動かしたかったのだが、動かなかったので、include_pathを調べてみたが合ってる様子。
色々試してみたところ、PHPがセーフモードの為、動かなかったのが判明した。
ブラウザで起動する場合は、php.ini、httpd.conf、.htaccessの設定を読むが、cron(CLI)ではデフォルトはphp.iniのみだそうなので、php.iniのsafe_modeをOffにしようとも思ったが、そうするとサーバ全てに反映されてしまい、セキュリティ上好ましくない為、cronの記述に「/usr/bin/php -d safe_mode=off」のように -d safe_mode=off を追加することにより問題が解消されました。
- デコメ送信機能を作ってみた
- 2010.05.26
管理画面からメルマガを作成し、会員番号や会員ページのURLを差し込み画像もインラインで添付するような携帯向けメルマガ配信システムを作ってみた。
当初、Qdmailを使用したが、ドコモのみ添付画像が削除され上手くいかなかったため、QdmailでQdsmtpも使いSMTP送信に変更した結果、無事ドコモでも画像がインラインで表示されるようになった。但し、SMTPサーバの種類によっては接続が上手くできず送信エラーが出るため注意が必要!!
調べたところ、1.26bではqmail判定ルーチン部分で不具合があるそうで、
以下のif文をコメントアウトすることにより、動作するようになった。/*
if(false !== @system($sendmail_path.’ -d0.1 < /dev/null
> /dev/null’,$ret)){
if(is_array($ret)){
$ret = reset($ret);
}
$code = (int) substr($ret,0,3);
if( 100 === $code || 111 === $code){
$this->is_qmail = true;
}
}
*/また、今回QdmailをSMTP送信で使ってみた感想として、関数型(qd_send_mail)は送信に時間がかかるため、OOP型にした方が断然よいというのが分かりました
- サブミットボタンの名前
- 2010.04.16
フォームの<input type=”submit” value=”送信”>や<input type=”image” src=”hoge.gif”>のような送信ボタンにname=”hoge” が無くても送信はされるが、たまたま作った検索システムで、検索ワードをある特定の文字にしたときだけその検索ワードが文字化けしてしまい、うまく検索できないという現象が発生
大抵の場合は、きちんと検索されるため、原因が分からず時間を費やしたため備忘録として記述しておきます。
対応策は既に書きました通り、送信ボタンに「name=”hoge”」を追加記述したら、原因は分かりませんが直りました。
- 携帯サイトの簡単ログイン
- 2010.01.23
ドコモの場合は、サイトタグにutn属性をつけると、固体識別番号を送信してもらえます。
utn属性付加の記述例<a href=”URL” utn>
<form method=”メソッド” action=”URL” utn>auやソフトバンクはユーザが識別番号送出を許可していてばタグの追加は必要なし。
但し、ソフトバンクは初期設定で識別番号を「通知しない」に設定されているので、事前に設定変更の必要があります。取得方法は以下の通りなので、事前にキャリアを判別し、それぞれのキャリア用の処理を行えばOK
//docomo
$ua = $_SERVER['HTTP_USER_AGENT'];
$id = (preg_match(’/ser(\w{11,15})/’, $ua, $matches)) ? $matches[1] : ”;
//AU
$id = isset($_SERVER['HTTP_X_UP_SUBNO']) ? $_SERVER['HTTP_X_UP_SUBNO'] : ”;
//Softbank
$id = isset($_SERVER['HTTP_X_JPHONE_UID']) ? $_SERVER['HTTP_X_JPHONE_UID'] : ”;
これで$idに個体識別番号がセットされるので、会員DBに既に登録されている個体識別番号とつきあわせてユーザー認証を行います。
- 空メールでPHPを起動する
- 2010.01.21
空メール処理を作成したので、メモします。
1.空メール送信用メールアドレス作成
2.受信メールボックスにメールが来たらPHPを起動するため、.qmailを編集。
使えるネットの場合、/var/qmail/mailnames/自分のドメイン/追加したメールアカウント/に.qmailがあるので、SSHで接続し、該当ディレクトリに移動してmoreコマンドなどで内容を表示してみると[root@*********]# more .qmail
| true
| /usr/bin/deliverquota ./Maildirとなっているので、1行目に以下の行を追加。
| /usr/bin/php -d safe_mode=off /var/www/vhosts/自分のドメイン/private/mail.php
※この例では、privateディレクトリのmail.phpを起動する
(セキュリティの為、ウェブでアクセス出来ないディレクトリに保存)
privateディレクトリのパーミッションは7053.mail.phpに処理を記述
と、このような処理になるのだが、動かなくて大分苦労しました。
結局privateディレクトリのパーミッションが原因だと分かり無事解決
