• ベストアンサー
  • 困ってます

cronでPHP実行

お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数643
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • notnot
  • ベストアンサー率47% (4722/9944)

0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と書いて、 /bin/sh: /home/hoge/public_html/mail.php: Permission denied というエラーメッセージは出ません。 これは、 0 12 * * * /home/hoge/public_html/mail.php と書いたときのエラーメッセージじゃないですか? php本体のパスを確認して、 0 12 * * * phpのパス -q /home/hoge/public_html/mail.php と書くのがいいです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 無事、解決致しました。 phpのパスは /usr/lib/php ではなく /usr/bin/php となっておりました。 早速、 0 12 * * * /usr/bin/php -q /home/hoge/public_html/mail.php と指定し直しましたところ、正常にメールが配信されました。

その他の回答 (2)

  • 回答No.3
  • yambejp
  • ベストアンサー率51% (3827/7415)

>URLを直接指定して実行した場合は正常にメールが配信されます。 じゃ、wgetでURLを指定すればよいでしょう 場合にもよりますがspiderモードでもいけることもあります

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 wgetでURLを直接指定して試してみたところ、 failed: No route to host. とエラーメールが返ってきてしまいました。

  • 回答No.1

こんにちは エラーメッセージから見ると権限が足りないようですね。 スクリプトのパーミッションを確認しては如何でしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 パーミッションを確認してみると500となっていて、実行権限が無かったため755に変更致しました。

関連するQ&A

  • crontabでのシェル自動実行がNG

    いつも参考にさせてもらっています。 linux(Red Hat Enterprise Linux ES release 3 Apache/2.0.46)上でcrontabを設定したいのですが、 現在うまくいっておりません。 まず、autoindex.shというシェルを/home/foo/scripts/ディレクトレィに作成しました。中身は3行からなっていて #!/bin/sh cd /var/www/html/search/index mknmz -a /var/www/html/test です。telnet上でroot権限を使用し、./autoindex.shコマンド発行で正常に動作しました。 そこで、crontabに以下のように # crontab -l 50 11 * * * root /home/foo/scripts/autoindex.sh と設定したところ、 # more /etc/log/cron Sep 27 11:50:01 intra crond[18280]: (root) CMD (root /home/foo/scripts/autoindex.sh ) とcronは決めていた時間(11時50分)に稼動しているようなんですが、mailを見ると # mail -t From root@XXX.com Wed Sep 27 11:50:01 2006 Date: Wed, 27 Sep 2006 11:50:01 +0900 From: root@XXX.com (Cron Daemon) To: root@XXX.com Subject: Cron <root@hoge> root /home/foo/scripts/autoindex.sh X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> /bin/sh: line 1: root: command not found と、シェルがこけているようです。 何か解決のヒントがありましたら、ぜひ教えていただけないでしょうか。

  • PHPの定期実行[ Linux&cron ]

    Redhat9.0 PHP4.3.3を利用しています。 cronとコマンドライン版のPHPを利用して「1分毎に自分にメールを送る(実験用)」プログラムを実行させたいのですが、コマンドラインでは実行可能なのに、cronに登録してもメールが送られてきません。cronにはプログラムを実行したログが残っています。 完全に行き詰ってしまった。よろしくお願いします。 [ crontab ] * * * * * php /home/hoge/mail.php [ mail.php ] mb_language("Ja"); mb_internal_encoding("SJIS") ; $subject="test"; $content = "test"; $mailfrom="From:hoge@hoge.jp"; $mailto="***@hoge.com"; mb_send_mail($mailto,$subject,$content,$mailfrom);

    • ベストアンサー
    • PHP
  • PHPファイルをcronで実行するには…?

    ご質問させてください。 私はさ○らインターネットを使っていて、そこで cron設定をしてあるPHPファイルを実行したいを考えています。(このPHPファイルというのはメール送信のファイルです。) いろいろなサイトを探し回って設定の方法を調べたら、実行コマンドに cd /home/○○/www/; ./○○.php もしくは /usr/local/bin/php -f /home/○○/www/○○.php  と記述すれば大丈夫ということなのですが、これが全く起動していないようなのです。 そもそも cron ではPHPを起動できないのでしょうか?ご存知の方がいらっしゃいましたらご教授お願いいたします!

    • ベストアンサー
    • PHP
  • CentOSでcronからphp mail送れない

    こんにちは。 CentOSでcronの設定をしました。 */2 * * * * /usr/local/bin/php -f /usr/mail.php 1> /usr/log.txt 上記でmail.phpは2分置きに実行されていますが、 mail.php内のmb_send_mail関数がどうしても実行されません。 (ログよりmail.phpは実行されています。 print出力により確認) コマンドから直接 php /usr/mail.phpで実行するとメールは送信されます。 Centos 6.3 php 5.3.3 Cronでphpのmb_send_mailを実行する際には何か設定がいるのでしょうか。 アドバイス等ありましたら、よろしくお願いします。

  • cronが動かない

    cronからphpスクリプトを動かそうと設定したのですが動きません。 エラーメールやエラー表示もされません。 phpスクリプト自体は、cronを使わず手動なら動作しています。 どこか設定に異常個所などがあればご指摘やアドバイスなど頂きたいと思います。 以下に設定内容を記載します。 【crontab】 # crontab -u testuser -e 0-59/5 * * * * /usr/bin/php -q /home/testuser/public_html/mail.php 2>&1 0-59/10 * * * * /usr/bin/php -q /home/testuser/private_html/mail.php 2>&1 【cron確認】 # ls -l /var/spool/cron/ -rw------- 1 root root 251 4月 17 15:25 testuser -rw------- 1 root root 71 4月 16 18:28 root 【mail.php】 #!/usr/bin/php <?php $tim = time(); $today = gmdate("Y/m/d(D)",$tim+9*60*60); $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); mb_language("Ja") ; mb_internal_encoding("EUC-JP") ; $mailto="test@****.jp"; $mailfrom = "From:" .mb_encode_mimeheader("cronテスト") ."<" . $mailto .">"; $parameters = '-f' . $mailto; $return_path = "$mailto"; $subject="テストメール"; $body ="クーロンテスト\n"; $body .="送信年月日: $today \n"; $body .="送信時間: $now \n"; mb_send_mail( $mailto, $subject, $body, $mailfrom,"-f $return_path" ); ?> 【パーミッション】 /home/testuser/public_html/  705 /home/testuser/private_html/ 705 /home/testuser/public_html/mail.php 705 /home/testuser/private_html/mail.php 705 rootユーザーでのcronは正常に動いています。 ご教授の程、宜しくお願い致します。

  • phpからサーバー上のcronにジョブ登録したい

    プログラミング初心者です。 【ウェブブラウザでphpファイルを開くと、レンタルサーバーのcronにジョブ登録される】ようにしたいのですが、上手く行きません。 下記記述に不備はありますでしょうか? <?php $cron = popen("/usr/bin/crontab -", "w"); $line = "51 22 13 11 * /usr/bin/php /home/userid/public_html/絶対パスでファイルの場所/ファイル.php"; fwrite($cron, $line); pclose($cron); ?> ※テストとして 11/13 22:51 に実行するような記述をしていました。 諸々検索もしたのですが、レンタルサーバー上にphpでジョブ登録するような事例がなく… お力添えください。宜しくお願い致します。

    • 締切済み
    • PHP
  • CORESERVERでCRONジョブが実行されない

    この手の情報はネット上に沢山あるので自分なりに調べたのですが解決に至りませんでしたので質問させてください。 やりたいことは、CORESERVERのCRONジョブで設定した時間にcron.shを動かしてtest.phpを実行したいです。 ■現状 ・CRONジョブは毎日午前11時に動作するように設定 0 11 * * * ・CORESERVERからCRONジョブのエラーや成功メールが1通も届かない ・Tera Term で直接CRONを実行したが500エラーが返ってくる ・シェルスクリプトで動かしたいPHPファイルに問題はなかった(直接実行して成功) ■やったこと cron.shをCORESERVERのトップディレクトリに設置 /virtual/ユーザー名/cron.sh cron.shに記述した内容は #!/bin/sh #PHP /usr/local/bin/php /virtual/ユーザー名/public_html/サイトディレクトリ/php/test.php exit です。cron.shのパーミッションは705にしました。改行コードはLFです。 test.phpまでのディレクトリのパーミッションも705になっています。test.phpのパーミッションは644です。 Tera Term に入力したコマンド? sh /virtual/ユーザー名/cron.sh 上記を決定すると以下のスターテスが返ってきました。 Status: 500 Internal Server Error Content-type: text/html 何か根本的な間違いをしているのでしょうか? アドバイスをお願いいたします。

  • さくらインターネットのCron設定、PHPが実行されない

    当方、さくらインターネットのスタンダードプランを利用しております。 特定のphpを定期的に実行したい為、Cron設定を行ってみました。 以下、使用した実行コマンドです。 /usr/local/bin/php -f/home/[アカウントID]/www/[PHPのパス] しかし、先ほど確認してみたところphpが実行されていませんでした。 今年の2月ごろに設定、4月24日までは毎時稼動してたようです。 Cronの設定自体は残っており、高負荷な為さくらインターネットより停止させられたという感じではありません。警告のメール等も確認できませんでした。 一応、同様のコマンドで別のphpを試しにcronで実行させてみましたが、正常に動作しませんでした。(ブラウザでアクセスすると正常に動作する。) コマンドが間違っているのでしょうか? ご回答いただけると助かります。

    • ベストアンサー
    • PHP
  • cronが実行されているのに動作しない

    phpファイルをcronで設定したのですが動作しません。 『cat /var/log/cron』にて確認をすると正常に実行されています。 実行はされているが、処理されないということになります。 何がだめなのでしょうか? cron設定 * * * * * /user/bin/php /var/www/public_html/test/mail/test.php test.php <?php require( '/var/www/private_html/test/data.php' ); $to_mail = "test@****.jp"; $m_title = "cronテスト"; $s_name = "メールテスト"; $return_mail = "test@****.jp"; mb_language( 'ja' ); mb_internal_encoding("utf-8") ; $subject = "$m_title"; $headers= "From:" .mb_encode_mimeheader( $s_name ) ."<" .$s_mail .">"; $return_path = '-f' . $return_mail; $body = "メール送信テスト\n\n"; mb_send_mail( $to_mail, $subject, $body, $headers, $return_path ); ?> 以上のphpファイルをcron設定しており、 URLを直接たたくとphpファイルは処理されることも 確認済みです。 cronからの実行だとなぜファイル処理がなされないのでしょうか? 原因がわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • cronでpg_dumpの実行

    こんにちわ。 Linuxでcronを設定しPHPからexecで「pg_dump」を実行しようとしています。 エラーになり実行ができません。 設定は /var/spool/cron ディレクトリに 『crontab -e -u postgres』でコマンドを実行し SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO='' HOME=/ 08 19 * * * postgres /usr/bin/php /home/var/b_dump.php とcrontabに記載しています。 コマンドの実行はrootユーザで 権限は777 にしています。 メールを届くようにしているのですが、届くメールは 『postgres does not know where to find the server configuration file. You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』 と届きます。 googleで検索したのですが、解決方法がわかりません…。 読みにくい文章で申し訳ないのですが、解決方法のご教授を お願いします。