電子書籍の厳選無料作品が豊富!

タイマー機能を使って指定時間にメール送信したいと思います。

送信するメールは
送信先、内容、送信時間 全て毎回変わります。

メール送信する人間はPC初心者のため、管理画面を作成してブラウザから操作してもらいます。

管理画面で入力した送信時間を
phpからcronを書き換えてタイマー処理にと考えていましたが、crontabのパーミッションを777にしても書き込みできませんでした。

エラーメッセージは
Warning: fopen(/etc/crontab): failed to open stream: Permission denied
とでます。

ソースは下記になります。
$file = fopen('/etc/crontab','a');

ls -l /etc/crontabの内容は
-rwxrwxrwx 1 root root 307
です。

phpからcrontabは編集できいないのでしょうか?
現在はテストサーバーで試験していますが、本番のサーバーは未定です。
root 権限はあるものとします。
Linuxでの実装が難しいようであればWindows(admin権限有り)も検討しています。

どなたかわかる方、いらっしゃらないでしょうか?
よろしくお願いいたします。

A 回答 (1件)

回答ではありませんが、crontabファイルが777って。

。。恐すぎません?

(最悪でも許可された処理しか出来ないようにするために、
 sudoとかmod_suexecを使うべきかと)

ただ、メールを指定された時刻に発行するだけのことなら、cronを触らなくても
system("at 実行する日付と時刻 メール発行するシェル");
で、指定するだけでできますよ。

もし、1回のエントリーでメール発行が一回ということでなく、
一度エントリーしたら、同じメールを毎日や毎週でメールを定期発行するというのであれば、独自にキュー管理するテーブルを作って
cronで、5分毎にphpを動かして、そのphpが最新5分以内のキューデータをみてメール発行するようにすればいいのではないでしょうか。
(前後処理時間差の関係でメールを多重発行しないように、発行済みのキューはテーブルに発行時刻を埋めるなりして)
    • good
    • 0
この回答へのお礼

>superside0様

返信ありがとうございます。

crotは固定で○分ごとに起動し、
phpでDBを見て送信メールを送るようにすれば良いのですね。

簡単な事を難しくやろうとしてました。
ありがとうございます。

お礼日時:2008/04/25 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!