dポイントプレゼントキャンペーン実施中!

レンタルサーバーのCron設定についてですが、Hellow World! とメッセージを送るphpファイルをつくり、1時間おきに送信するように設定しました。ただひとつだけ問題がありまして、cronの設定だけで、phpファイルを実行したいのですが、そのphpファイルに直接アクセスしただけでもメール送信が実行されてしまうので、phpファイルをcron設定からの命令だけのみで実行されるようなことは可能でしょうか?

ファイル構成としては

public_html/
+ test.sh  ←mail.phpを実行するためのシェルスクリプト
+ mail.php  ← hello world とメッセージを送信するプログラム

※test.shの中に、php mail.php と書き加えて、レンタルサーバーのCron設定より、
0 */1 * * * /home/testsever/public_html/test.sh と指定して実行しています。
ただ、公開した www.testsever.com/mail.php に直接アクセスしても、プログラムが実行されるので困っています。

A 回答 (3件)

CLIモードでy呼び出すのはやめてwgetなどクローラーから


公開サーバーから呼び出すようにして
mail.php?cron=1
のようにパラメーターまで見るようにすればよいでしょう
    • good
    • 0
この回答へのお礼

ありがとうございます。cronで wgetを使うようなやり方は知りませんでした。このあたりも詳しくないので調べて試して見たのですが、ちゃんと動いてくれました。
0 */1 * * *  wget -O result.log "http://www.testsever.com/mail.php?cron=[適当]" のようにやって、 phpのほうは i条件分岐より、GETでパラメーターを受ける形で実行することができました。パラメーターによってメッセージの内容も変えることができるので、とてもおもしろいです。(自己満足ですが…笑)

お礼日時:2016/06/09 22:32

レンタルサーバーがわかりませんが、httpアクセスできるフォルダと


httpアクセスできないフォルダがあるのではないでしょうか?
httpアクセスがどのユーザで実行されるのかわかりませんが、
適切なアクセス権を設定するか公開されないフォルダに配置すれば大丈夫かと思います。
またtest.shはCronからのみ実行したいのですよね?
public_htmlにおくものではないかとおもいます。
おそらくですが、public_htmlに置くとそのまま外部からアクセス可能な状態になるかと思われます。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。おっしゃるとおり public_htmlの配下ではなく、同じ階層に設置したら上手くきました。当初は、うまく動かなかったので、無理なのかと思っていましたが、よくよく考えたら、パーミッションで実行権限を許可してなかっただけなので、解決してよかったです。

お礼日時:2016/06/09 22:40

https://oshiete.goo.ne.jp/qa/9302810.html
の続きなら、 外部に公開しなければ済むのでは。

このmail.phpはWeb関係の機能を使ってないし、HTML等を出力するわけでもありません。
phpコマンドを使って実行しているので、Webサーバーも使っていません。

そんなファイルを外部に公開しているのが間違いで、public_htmlに置く必要はありません。
    • good
    • 1
この回答へのお礼

ありがとうございます。確かにおっしゃるとおりでした。public_htmlと同階層においてもしっかりと実行されました。なんでもかんでもpublic_htmlの下に置くクセがありまして、いろいろ勉強になりました。

お礼日時:2016/06/09 22:35

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