質問: Linuxのcronについての質問です。 PHPファイルを、cronで実行設定したところ正しく動作しませんでした。 解決策・原因などをご教示ください。 ※Linuxについての知識はあまりなく、PLESK上にて操作しています。 ※ブラウザからPHPファイルにアクセスすると正常に動いていました。 ※エラーメールから、cron上でのPHPファイルのパスの指定は正しいように思われます。 ※情報が少ない場合はお知らせください。 ■実行したPHPファイルの中身(test.php) ■エラーとして送信されてきたメール内容 /var/www/vhosts/ドメイン名/httpdocs/test.php: line 1: ?php: No such file or directory /var/www/vhosts/ドメイン名/httpdocs/test.php: line 2: : command not found /var/www/vhosts/ドメイン名/httpdocs/test.php: line 3: syntax error near unexpected token `'自分のメール',' /var/www/vhosts/ドメイン名/httpdocs/test.php: line 3: `mail('自分のメール', 'Subject', 'test');'
回答: スクリプトを実行するということは、 そのスクリプトを「サーバにインストールされているどのソフトウェアで実行するのか?」指定しなくてはならないと思います。 今回はPHPです。 WEBアクセスの場合はWEBサーバが拡張子などで、これはPHPだと判断して、 スクリプトをPHPで実行するわけですが、 cron(コマンドライン)から実行する場合はこちらで指定しなくてはなりません。 方法は2つで、 1.PHPプログラムに引数として渡す。 2.スクリプトファイルの冒頭にPHPプログラムの場所を書いてあげる。 1.の場合の例は /usr/local/bin/php /var/www/vhosts/ドメイン名/httpdocs/test.php 2.の場合の例は スクリプトファイルの先頭に #!/usr/local/bin/php と書きます。 いずれ、実行するソフトウェアの場所(パス)を書いてあげるということです。 それと、該当ファイルに実行権限(パーミッション)も必要です。 実行権限は8進でいくと555とか755とか777でいけると思います。念のため。 エラーについては はスクリプト冒頭の行をソフトウェアのパスと解釈したとき、そのようなソフトウェア(ファイル)はないということだったり、コマンドとして間違っているといことだと思います。