• ベストアンサー

CRONを使ってshファイルの書き方がわからない

下記のやり方はうまくいきました #!/bin/sh /usr/local/bin/php /home/cron/index.php 以下の場合(パラメータが入った場合)がうまくいきません #!/bin/sh /usr/local/bin/php /home/cron/index.php?id=35 宜しくお願いいたします

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

  • ベストアンサー
  • kachansa
  • ベストアンサー率44% (30/67)
回答No.1

?って、ブラウザからGETリクエストでパラメータを渡すための区切り文字です。 PHPのスクリプトをサーバ上で動作させるなら、普通にスペース区切りによるパラメータ指定になると思いますが... cronとは関係なくシェル上で /usr/local/bin/php /home/cron/index.php?id=35 で成功してます? cronで実行するなら、まずはシェル上で実行できるか確認した方が良いですよ。

kenken8378
質問者

お礼

kachansaさん解決しました。 \?id=35したりして悪戦苦闘していました。 cronとは関係なくシェル上で /usr/local/bin/php /home/cron/index.php?id=35 で成功していないです。 シェル上でチェックした方が早いですね。sshソフトを入れていなかったので怠慢してました。 ありがとうございます!

関連するQ&A

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?

  • 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 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

  • cronの設定

    Linux, cron, PHP CLI版を使って、定期的にPHPスクリプトを実行させようとしておりますが、どうも上手くいきません。 コマンドラインで試すと上手くいくのですが、cronを使用して動かすと、実行結果が Could not open input file: /home/---/---/--/test.php と返ってきて、実行されておりません。 以下、crontabの内容です。 MAILTO="-------.com" */1 * * * * /usr/local/bin/php /home/---/---/---/test.php お忙しい中すみませんが、どなたかアドバイスをいただけないでしょうか?

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

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

    • ベストアンサー
    • PHP
  • xreaでのCronの設定について

    xreaでのCronの設定について どうしても解決出来ないので質問させて頂きました。 やりたい事は毎時一回 /public_html/cache_cron.phpを稼働させたいです。 現在の設定はxreaのCRONジョブの編集画面にて 分 時 日 月 曜日 0 * * * * /virtual/*****/public_html/cron1.sh 分 時 日 月 曜日 0 * * * * /virtual/*****/cron1.sh 始めは上の設定だけだったのですが動かないので下の設定も追加しました。 cron1.shは /public_html/cron1.sh /cron1.sh の両方にアップしています。 これも始めは/public_html/cron1.shだけにアップしてたのですが動かなかったので追加でアップしました。 アップ方法はffftpでのアスキーモードでcron1.shの改行もLFです。 パーミッションは705です。 cron1.shの中身は #!/bin/sh #PHP /usr/local/bin/php /virtual/*****/cache_cron.php /usr/local/bin/php /virtual/*****/public_html/cache_cron.php exit です。 cache_cron.phpにブラウザで直接アクセスすると希望通りの処理は行われます。 このファイルのパーミッションも705です。 一応確認でcache_cron.phpの最後に自分の携帯にメールを送信するプログラムも追加しているのですが、 直接アクセスしない限りメールは来ません。 他に必要な情報があれば書くので宜しくお願い致します。

    • 締切済み
    • PHP
  • cronが動かない

    cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

  • cronについて

    centos4を使っています。 初期設定?なのかは解らないのですが、root権限で1秒ごとに 下記のcronが登録されていました。 これはどのような意味があるのでしょうか。 /usr/bin/envdir.sh /etc/relay-ctrl /usr/bin/relay-ctrl-age

  • cron設定で正常に動作しない

    Solaris8でcronの設定を行っております。 まず /var/spool/cron/crontabs/rootファイルに 30 6 * * * /usr/local/shells/rsync-docs_com.sh を追加しました。 cronのログを確認したところ以下のメッセージが表示されていましたが、実際に処理は動いてなさそうです。 > CMD: /usr/local/shells/rsync-docs_com.sh > root 22386 c (月) 10月 9 06:30:00 2006 < root 22386 c (月) 10月 9 06:30:00 2006 rc=1 スクリプトファイルは処理が実行されるとログを出力するように設定していますがログが出力されません。 # sh /usr/local/shells/rsync-docs_com.sh # で手動で実行すれば正常にログも出力されます。 ------------------------------------------------------------------------ #!/bin/sh LOG_DIR=/home1/WEB_BACKUP/rsync_logs DAYS=30 /usr/bin/find $LOG_DIR -name 'rsync_*.log' -mtime +$DAYS -exec /usr/bin/rm {} \; /usr/local/bin/rsync -av --delete rsync://WWW7/www7-doc /home1/WEB_BACKUP/ www/docs_com >$LOG_DIR/docs_com-`date +%m%d%H%M`.log 2>&1 ------------------------------------------------------------------------ 何が原因か分かりますでしょうか? よろしくお願い致します

  • fedora11でのcron設定

    fedora11,apache,php5の環境でcronを使いたいのですが、動きません。。 状況が、 fedora11 php5 apache を使用していて、cronを使ってphpの定期実行を行いたいのですが、どうしてもうまくいきません。 かなりググってはみたのですが、liuxについては初心者なので、どうにもわかりません。 設定内容が、 /etc/crontabが、 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ * /1 * * * * apache /usr/bin/php /var/www/html/cron.php で、/var/log/cron でログを確認したところ Jul 28 19:00:01 host CROND[8417]: (apache) CMD (/usr/bin/php /var/www/html/cron.php) となっていてこれが一分ごとに出てきます。 cron.phpにはファイル追記の処理を書いてあります。 エラーではないようなのですが、ファイル操作が行われていないようなので動いていないようなのです。 ローカルホストでphpを実行したらちゃんと動くのでphp内のミスではないようです。 パーミッション関係だったらログにエラーが出そうなものですし、、、。困っています。。 どなたかお知恵を貸していただけませんでしょうか、よろしくお願いします。

  • PHPをバージョンアップしたらCRONが動かない

    CentOSとPHPをバージョンアップしたら、CRONだけが動かなくなってしまいました。 PATH関係が変わったことが問題のような検討がつくのですが、いろいろ試してもうまくいきません。どのように解決したら良いか教えていただければと思います。 [バージョンアップ内容] CentOSを5.3から5.7にバージョンアップ PHPを5.1.6から5.3.3にバージョンアップ phpMyAdmin3.4.8をインストール MySQL 5.0.77(バージョンアップせず) バージョンアップ前には ・PHPからMySQLにデータを登録するプログラムは動作していた。(ウェブサイト形式で動作確認) ・上記のプログラムはCRONで動いていた。(CRONでも動作確認) PHP5.1.6の時はCRONに下記のように登録していました。 10 * * * * /usr/bin/php /var/cron_file/test_cron.php アップデート後にウェブサイト形式でプログラムが動くことを確認しました(ページを開くと下記のプログラムが動作し、データをMySQLに登録) phpMyAdminも問題なく動きます。 CRONの問題点を探し出すために下記のことを行いました。 CRONのステータスを確認 # /etc/rc.d/init.d/crond status crond (pid 32151) を実行中... CRONをリスタート # /etc/init.d/crond restart crond を停止中: [ OK ] crond を起動中: CRONのエラーの確認 # vi /var/log/cron PHPの場所の確認 # find / -name php /usr/share/php /usr/include/php /usr/bin/php /usr/lib64/php /var/lib/php どれがPHPの場所なのかがわからないので、とりあえず5.1.6の時に指定していた「/usr/bin/php」を採用 このあたりはネットで情報を探して、登録してみたので正しいのかどうかよくわかりません。↓ PATHの記入 (その1) # vi /root/.bash_profile PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin export PATH (その2) #vi /etc/profile PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin export PATH PATHの確認 # env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/php (上記以外にもいろいろいじっていたら、このようになってしまいました。上記以外のところでどこで設定したかがわからないので、PATHを消す方法も教えていただければと思います) 「/usr/kerberos/sbin:/usr/kerberos/bin」はもともとシステムで登録されていたもので、上記で登録した「/sbin:/usr/sbin:/bin:/usr/bin」以外のもの「/usr/bin/php」などはどこで登録したかわからなくなってしまったものです。 CRONでPATHを指定する部分でPHPのバージョンによりPATHの値が異なるという情報を見つける /usr/bin/php /usr/bin/php5 /usr/bin/php53 各パターンで 「10 * * * * /usr/bin/●● /var/cron_file/test_cron.php」 をcrontab -eに登録してエラーを見てみる。 (1)「*/1 * * * * /usr/bin/php /var/cron_file/test_cron.php」 # vi /var/log/cron →エラーに何も表示されない (2)「*/1 * * * * /usr/bin/php5 /var/cron_file/test_cron.php」 → エラーに何も表示されない。 (3)「*/1 * * * * /usr/bin/php53 /var/cron_file/test_cron.php」 →エラーが表示される Dec 16 20:20:01 ドメイン crond[11412]: (root) CMD (/usr/bin/php5 /var/cron_file/test_cron.php) クローン自体は動いていて、エラーがでているような感じは把握できたのですがここで行き詰まりました。 PHPのパス関係か、MySQLのパス関係、PHPとMySQLの連係、そのあたりのどこかが原因なのでしょうか? 参考資料としてphpinfo()の情報を記載します。 Loaded Configuration File  /etc/php.ini PATH /sbin:/usr/sbin:/bin:/usr/bin 参考)プログラムの内容 --------------------------------------------- require_once ('/var/DB接続情報保存ディレクトリ/password.php') try { $dbh = new PDO($DSN , $DBUSER , $DBPASS); $query=<<<EOF INSERT INTO test (name) VALUES (:name) EOF; $stmt = $dbh->prepare($query);    $name='斉藤太郎'; $stmt->bindParam(':name', $name); $stmt->execute(); }//try_end catch(PDOException $e) { print "Error!: " . $e->getMessage() . "<br>"; die(); }//catch_end ---------------------------------------------

    • ベストアンサー
    • PHP