2016-06-13 6 views
-1

私はamazon amiでec2-userとしてこのスクリプトを実行しています。Amazon ami cronjobがMysqlにアクセスしていない

include '../cms_config.php'; 
$tracking_query="select *from cruise_track"; 
$tracking_result=mysql_query($tracking_query); 
$count=mysql_num_rows($tracking_result); 
if($tracking_result){$message='success';} 
else{$message='fail';} 
mail('[email protected]', 'Cronjob email', 'Count:'.$count, $headers); 

このコードはtest.phpファイルにあります。このコードをcronジョブとして実行すると、スクリプトはデータベースに接続できません。しかし、私は同じファイルをブラウザで実行するとうまく動作します。

問題が何であり、どのように修正できるか教えていただけますか?

+0

データベースに接続しようとするコードはありません。 – andrewsi

+0

このように有用なエラーメッセージを出力する: '$ con = mysql_connect(...)or die(mysql_error());' '$ res = mysql_query(...)or die(mysql_error())'など... don 't output "fail" - 固定/不変エラーメッセージは本質的に役に立たない。 –

+0

私はこのコードの上に接続を含めました。このコードは、ブラウザを実行してもうまく動作します。しかし、私はcrontabとして同じファイルを設定すると動作しません。 –

答えて

0

最初にあなたのPHPスクリプトディレクトリにcdを試してください。ない

1 0 * * * /usr/bin/php /path/to/your/script.php 

しかし

1 0 * * * cd /path/to/your; /usr/bin/php /path/to/your/script.php 
+0

cronjobを実行するには、 '1 0 * * */usr/bin/php/path/to/your/script.php' cronジョブが動作していました。私はデータベース接続文字列を含めるために相対パスを使用していました。私は同じファイルでdb接続を行い、作業を開始しました。 '/ path/to/your/includes.php'のようなcronjobのスクリプト内で絶対パスを使うべきです。 –

0

最終的に私はこの問題を考え出しました。私はデータベース接続文字列include '../cms_config'を含めるために相対パスを使用していました。スクリプトをcronjobとして実行すると、相対パスは機能しません。私は同じファイルでデータベースに接続して問題を修正しました。ここに作業コードがあります。

$hostname_connect= "localhost"; 
$database_connect= "mydb"; 
$username_connect= "username"; 
$password_connect= "password"; 

$connection_string= mysql_connect($hostname_connect, $username_connect, $password_connect) or trigger_error(mysql_error(),E_USER_ERROR); 
$dbSelect = mysql_select_db($database_connect) or die (mysql_error()); 

$tracking_query="select *from `tracks`"; 
$tracking_result=mysql_query($tracking_query); 
$count=mysql_num_rows($tracking_result); 
if($tracking_result){$message='success';} 
else{$message='fail';} 
mail('[email protected]', 'Cronjob email', 'Total Results:'.$count, $headers); 

だから、他のファイルやフォルダなど、あなたのcronジョブのコード内のユーザーの絶対パス。

+0

悪い考え:1)大規模なプロジェクトでは使用できません。すべてを1つのファイルに入れることはできません。2)コードの絶対パスは悪いです。これが私が最初に適切なディレクトリに 'cd 'を提案した理由です。 – Putnik

関連する問題