• ベストアンサー

シェルコマンドでphpを実行したい!

 さくらインターネットでcron設定を使って月末になると起動するphpを読み込もうとしたいのですが、どうやっても上手くいきません。 いろいろと参考になるサイトはあるのですが、動かない理由がわからないのでどなたか教えてください。  まず、cron設定で設定しているシェルのファイルが置いてあるパスに間違いはありません。  次にシェルファイルに書いてあるコードは以下です。 #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin cd /home/自分のID/www/自分で作ったフォルダ/; ./自分で作ったフォルダ/phpファイル という風に書いてあります。 ところが、時間になるとこれが実行されず、 サーバーよりエラーメールが届きます。 [not found]と一言。 …最初、シェルファイルの階層が間違っているかと思ったのですが、 どう見てもあってますし…中身が問題なのかなぁ、と考えます。 何かわかれば、是非教えてください。 お願いします。

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin cd /home/自分のID/www/自分で作ったフォルダ/ php phpファイル 上記のtypoじゃないすかね。 命令終了はセミコロンじゃないです。 cronでphpファイルを起動させるだけなら別に.shファイル使わなくても 直接crontabにphp起動コードを書けば良いと思いますよ。 0 0 1 * * php /home/自分のID/www/自分で作ったフォルダ/phpファイル >PATH php実体へのパスが通っていないパターンを考慮すれば別に記述があっても不自然ではないと思いますが・・・

noname#92587
質問者

お礼

できました!wp_さん!! 直接、ここで書けばよかったんですね! てっきりシェルコマンドを使わないとできないものだ、と 認識していました。 もう少し勉強して知識を深めていきますね。

その他の回答 (4)

回答No.5

なんか盛り上がってますね。 phpコマンドが通る場合は #!/bin/sh php /home/...../phpファイル で良いと思います。 しかし、CLIインストールされていない場合もあると思います。 インターネット経由でwgetやcurl等でたたくという方法もありますよ wget http://localhost/ファイル名 参考まで。

noname#92587
質問者

お礼

ありがとうございます! いろいろ皆さんの意見を見ていて考えていたらできました!!

  • uki629
  • ベストアンサー率23% (40/172)
回答No.3

>[not found]と一言。 当たり前。 >cd /home/自分のID/​www/​自分で作ったフォルダ/; ./自分で作ったフォルダ/phpファイル まずなんで「cd」(ディレクトリ移動)? しかもディレクトリですらない「phpファイル」にディレクトリ移動ができると思いますか? >PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin しかもこの無駄なパス通しはなんのため? シェルスクリプト以前にコマンドの使い方を勉強すべき。

noname#92587
質問者

お礼

ありがとうございます。 サクラインターネットに関する記事を参考にしながら ソースを書いていたのでそこから探っていたんです。 しかし、いろいろ指摘を受けてわかりました。

回答No.2

phpはCLIで動くようになっていますか? なっているなら、CLIで動かすファイルの最初に 「#!/usr/local/bin/php」みたいに、CLIのphpがインストールしている場所を指定して、実行権を付けていれば実行できるはずです。

noname#92587
質問者

お礼

ありがとうございます。 何とか動かすことができたようです。 CLIというをもう少し調べてみますね。

回答No.1

php ./自分で作ったフォルダ/phpファイル みたいに、ちゃんとコマンドを起動してファイルを渡さなきゃ。ファイルを ダブルクリックしたらOSが勝手にそれらしいコマンドを起動してくれるわけ じゃないんだから。

noname#92587
質問者

お礼

ありがとうございます。 初めて触ったところでいろいろと自分なりにも 調べてみたのですが、理解ができませんでした。

関連するQ&A