2016-08-24 13 views
0

イムPHPからcronジョブを作成しようと、私はcrotanbためにこれを追加しました:cronジョブの実行PHPのエラー

にsudoのcrontab -u WWW-データ-l:

*/1 * * * * /usr/bin/php /var/www/html/service_script/cronTest.php 

cronTest.php

<?php 
echo 'it works'; 
include_once('../core/external_init.php'); 

そして、これが出力されます。

it works 

PHP Warning: include_once(../core/external_init.php): failed to open stream: No such file or directory in /var/www/html/service_script/cronTest.php on line 3 

PHP Warning: include_once(): Failed opening '../core/external_init.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/service_script/cronTest.php on line 3 

PHP Fatal error: Uncaught Error: Class 'pluginClassManagement' not found in /var/www/html/service_script/cronTest.php:6 

Stack trace: 
#0 {main} 
    thrown in /var/www/html/service_script/cronTest.php on line 6 

このcronTest.phpは、ブラウザから実行すると動作します。 Iが、/ usr/libに/ PHPには/ usr/bin/phpを変更した場合は、私が代わりにこのエラーが出る:

/bin/sh: 1: /usr/lib/php: Permission denied 

私は本当にここがどうあるべきか、パスを知りません。

私はPHP7を持って、

+1

cronから実行するときは、絶対パスを使用する方がよいでしょう。 cliで実行すると、相対パスは現在の作業ディレクトリを参照します。 '/ usr/bin/php'の部分は、' php/var/www/... 'のように' php'を置くだけです。 – frz3993

+0

@ frz3993絶対パスはめったに良い考えではありません。それはあなたのコードを理由なしで移植性のないものにします。相対パスはこれで完璧です。つまり、インクルードパスの設定です。あなたは(通常)httpサーバとphpのコマンドラインバージョン用に別々のphp.iniファイルがあることに注意してください。これにより、異なるインクルードパスの定義が可能になります。これにより、ローカルシステムに固有の設定が行われます。これは完全に意味があります。 – arkascha

+0

'/ usr/lib/php'は意味をなさない。 cronジョブからPHPインタープリタを実行したいということに注意してください。つまり、実行可能なスタンドアロンの "プログラム"が必要です。これは、 "開始"または実行することができます。ご使用のシステム上でphp cli実行可能ファイルがどこにあるか確認してください。それにはシステムソフトウェア管理システムを使用してください。 – arkascha

答えて

1

もう私は、スクリプトを実行可能にするなどを行い、権利を設定し、この仕事をするために事のすべての種類を試してみましたが、今イムは、この上で立ち往生し、何をすべきかを知らないなどが絶対でそれを試してみてくださいパス(/var/www/path/to/core/external_init.phpのように)。私はかなり確信しています、それは間違った作業ディレクトリをcronとして実行すると使用します。

+0

を参照してくださいこれについての私のコメント。 "作業ディレクトリ"を修正するには、 'cd'コマンドまたはphp cliオプションを使って変更する必要があります。しかし、よりよいアプローチは、良い理由のためにインクルードパスフィーチャーを提供することです。 – arkascha

+0

@ DBX12ありがとう、それはトリックでした!私は他のエラーの束を修正しなければなりませんでしたが、これは動作しました。 – Honza

関連する問題