人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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');'

●質問者: webuser
●カテゴリ:ウェブ制作
✍キーワード:Command Linux NOT FOUND PHP Plesk
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●60ポイント ベストアンサー

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

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

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


おそらく、cron の中には

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

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

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

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

◎質問者からの返答

ありがとうございます。

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


2 ● masashi0316
●40ポイント

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

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

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

エラーについては

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

◎質問者からの返答

ありがとうございます。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ