Linuxのcronについての質問です。

PHPファイルを、cronで実行設定したところ正しく動作しませんでした。
解決策・原因などをご教示ください。

※Linuxについての知識はあまりなく、PLESK上にて操作しています。
※ブラウザからPHPファイルにアクセスすると正常に動いていました。
※エラーメールから、cron上でのPHPファイルのパスの指定は正しいように思われます。
※情報が少ない場合はお知らせください。

■実行したPHPファイルの中身(test.php)
<?php
mail('自分のメール', 'My Subject', 'test');
?>

■エラーとして送信されてきたメール内容
/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');'

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2008/02/16 17:25:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント60pt

そもそも通常の PHP スクリプトは Web サーバー上で動くことを前提としているので、

単体のスクリプトとして実行するには別の方法が必要です。

PHP: PHP をコマンドラインから使用する - Manual


おそらく、cron の中には

/var/www/vhosts/ドメイン名/httpdocs/test.php

とだけ書いているのだと思いますが、この場合

php -f /var/www/vhosts/ドメイン名/httpdocs/test.php

と書き直すと動作すると思われます。

id:webuser

ありがとうございます。

この方法で正常稼動が確認できました。

2008/02/16 17:24:23

その他の回答1件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント60pt

そもそも通常の PHP スクリプトは Web サーバー上で動くことを前提としているので、

単体のスクリプトとして実行するには別の方法が必要です。

PHP: PHP をコマンドラインから使用する - Manual


おそらく、cron の中には

/var/www/vhosts/ドメイン名/httpdocs/test.php

とだけ書いているのだと思いますが、この場合

php -f /var/www/vhosts/ドメイン名/httpdocs/test.php

と書き直すと動作すると思われます。

id:webuser

ありがとうございます。

この方法で正常稼動が確認できました。

2008/02/16 17:24:23
id:masashi0316 No.2

回答回数16ベストアンサー獲得回数0

ポイント40pt

スクリプトを実行するということは、

そのスクリプトを「サーバにインストールされているどのソフトウェアで実行するのか?」指定しなくてはならないと思います。

今回は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でいけると思います。念のため。

エラーについては

はスクリプト冒頭の行をソフトウェアのパスと解釈したとき、そのようなソフトウェア(ファイル)はないということだったり、コマンドとして間違っているといことだと思います。

id:webuser

ありがとうございます。

とても勉強になりました。

2008/02/16 17:24:12

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません