Amazon ami cronjob无法访问Mysql

时间:2016-06-13 18:49:27

标签: php mysql amazon-ec2 crontab

我在amazon ami上以ec2-user身份运行此脚本。

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('diversifiers@gmail.com', 'Cronjob email', 'Count:'.$count, $headers);

我在test.php文件中有这段代码。当我将此代码作为cronjob运行时,脚本无法与数据库连接。但是,当我通过浏览器运行相同的文件时,它工作正常。

你能告诉我这是什么问题以及如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

首先尝试cd到你的php脚本目录,例如不

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

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

答案 1 :(得分: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('diversifiers@gmail.com', 'Cronjob email', 'Total Results:'.$count, $headers);

当包含其他文件和文件夹时,cronjob代码中的用户绝对路径。