我在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运行时,脚本无法与数据库连接。但是,当我通过浏览器运行相同的文件时,它工作正常。
你能告诉我这是什么问题以及如何解决这个问题吗?
答案 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代码中的用户绝对路径。