XREA で cron ジョブを設定してシェルスクリプトを書いて PHP を起動させてメールを送信

cron とかシェルスクリプトとかよく分からなくて、ちゃんと設定してもなかなか文字化けでうまく動作せず、10日間くらい悪戦苦闘しながら100を超える Web ページを読みあさり、それを参考に次のような設定にしたところ解決できたのでメモしておきます。これから同じことをしようとする人の参考になれば幸いです。

PHP の設定

簡単なメール送信のスクリプトを書いておいて、ファイルの保存形式は EUC で改行コードは CR+LF にします。

1
2
3
4
5
6
7
8
9
10
11
$header = "Content-Type: text/plain;charset=iso-2022-jp\r\n";
$header .= "From: "."from@hoge.com";
mb_language("Japanese");
$address = 'address@hoge.com';
$subject = '件名';
$message = '本文';
if(mb_send_mail($address, $subject, mb_convert_encoding($message,"jis","euc-jp"), $header)){
print("メール送信完了");
}else{
print("送信に失敗");
}

cron.sh の設定

とりあえず以下のような感じで PHP を呼び出します。保存形式は UTF-8 で改行コードは LF にします。あと小粋空間さんの記事が気になったので、念のためにパーミッションを 705 にしておきました。Windows とかのメモ帳で保存すると改行コードは勝手に CR+LF になってしまうので、改行コードを変更できるエディタを使いましょう。

1
2
3
4
5
#!/bin/sh
#PHP
export LANG="ja_JP.eucJP"
/usr/local/bin/php /virtual/ken/public_html/ke-tag.com/mail/info.php
exit

メモ書き

ホント意味わからなかった。途中何度も諦めようかと思ったけど、なんとか目的を達成することができたので良かったです。10日間の努力が実った瞬間は最高でした。こういう壁にぶち当たりながらもそれを乗り越えていく快感が止められないかもですねー。

ちなみに UTF-8 で全部作りたかったんだけど、いろいろと日本語を使う場合は cron に絡ませると UTF-8 は使えないみたいだから、日本語を使うファイルは EUC で作って export するときは LANG=”ja_JP.eucJP” のようにして環境変数なのか文字コードなのかよく分かりませんがを一致させる必要があるみたいです。私にはちょっと難しすぎてこの辺は理解しきっていませんが、雰囲気は掴めた気がします。

あと文字コードに関する重大なことや癖について知識がかなり深まったので、これからしばらく初歩的な文字化けに悩まされることはなさそうです。

コメント

  1. easybotterによるtwitter botのcronをXREA+で動かしたい - みついれ@カオスさんのコメント

    [...] とあるL点の藻屑日記 – 俺でも作れたTwitter bot XREA で cron ジョブを設定してシェルスクリプトを書いて PHP を起動させてメ… PHP メモランダム・・・XREA サーバでの cron 利用例 小粋空間: CORESERVER / XREA [...]

  2. easybotterによるtwitter botのcronをXREA+で動かしたい - みついれ@うぇぶろぐさんのコメント

    [...] とあるL点の藻屑日記 – 俺でも作れたTwitter bot XREA で cron ジョブを設定してシェルスクリプトを書いて PHP を起動させてメ… PHP メモランダム・・・XREA サーバでの cron 利用例 小粋空間: CORESERVER / XREA [...]