4

helloをエコーするだけのphpファイルを実行するように設定しました。

<?php
echo hello;
?>

私のcronジョブは次のようになります。

/usr/local/bin/php -f “/home/username/public_html/mls/test.php”

スクリプトを実行すると、次のような確認メールが届きます。

Could not open input file: /home/username/public_html/mls/test.php 

何が原因なのかわかりません。cpanelxがインストールされたgodaddyの仮想プライベートサーバーを使用しています。sshを使用してフォルダーとファイルにアクセス許可777を設定しましたが、それでも実行できません。

どんなアドバイスも役に立ちます。ありがとう。

4

1 に答える 1

6

何らかの理由で、PHPはファイルを開くことができません。/ usr / local / bin /php-fを"ls-la"に置き換えて、さらに情報を取得してみてください。crontabでファイル名を引用しないでください。スペースが含まれていない限り、php-f"filename.php"ではなくphp-ffilename.phpです。その場合は、一重引用符を使用することをお勧めします。

おそらく、「ls -la / home」、「ls -la / home / username」、「ls -la〜/public_html」などを試してください。

また、追加してみてください

2>&1

stdoutだけがあなたに郵送される場合に備えて、コマンドラインに送ってください(私は実際にはそうは思いませんが、確かにほとんど費用がかかりません)。

もう1つの可能性

crontabは、それ自体が参照します。つまり、ユーザー名のホームディレクトリの最も一般的な値/home/username/public_html/mls/test.php内のパブリックHTMLディレクトリです。

cronジョブが適切なユーザーと権限で実行されていないか、cronジョブが「表示」するユーザーが実際には仮想ユーザー( 「/ home / username」まったくない)と「ホームディレクトリ」である可能性があります。 cronジョブが実行されている限り、他の場所に存在する可能性もあります。この場合、解決策は参照することかもしれません

~/public_html/mls/test.php

または、上記のように、最初にpwdまたはなどのコマンドを実行して、cronジョブの現在の作業ディレクトリls -laどこにあるかを正確に判別します。

これも失敗した場合、別の回避策は、curlまたはlynxを介してPHPHTTPハンドラーを呼び出すことです。

/usr/bin/curl http://www.thishostname.com/mls/test.php

おそらく、環境変数、curlヘッダー、または_GETオプションのいずれかを使用して、スクリプトをcronジョブとして認証し、外部からアクセスできないようにします。

于 2012-07-18T18:38:12.327 に答える