Cron作业更改PHP电子邮件脚本输出
我昨天设置的cron作业有一个奇怪的问题。我正在运行以下CronJob脚本: 0 7***php-q/wocs/email.php 这是指向我放在下面的电子邮件脚本。目标是让它运行调用MySQL数据库的脚本,并向用户发送一封电子邮件,告知他们必须签署多少张票。当我在phpmyadmin中运行查询时,我得到了正确的结果,当我在页面上回显结果时,它给出了正确的结果。但在今天早上7点,Cron作业通过电子邮件发送给数据库中的每个用户(即使是没有任何未完成的票证的用户——因此他们根本不应该收到任何东西,而且在我自己运行脚本时测试查询时,他们也不会出现)。他们每个人都发了十几次电子邮件,发送的号码不准确,我无法复制自己 这是代码,当我在浏览器中运行它时,它可以完美地工作,唯一一次出现错误是在Cron作业运行时Cron作业更改PHP电子邮件脚本输出,php,mysql,email,cron,Php,Mysql,Email,Cron,我昨天设置的cron作业有一个奇怪的问题。我正在运行以下CronJob脚本: 0 7***php-q/wocs/email.php 这是指向我放在下面的电子邮件脚本。目标是让它运行调用MySQL数据库的脚本,并向用户发送一封电子邮件,告知他们必须签署多少张票。当我在phpmyadmin中运行查询时,我得到了正确的结果,当我在页面上回显结果时,它给出了正确的结果。但在今天早上7点,Cron作业通过电子邮件发送给数据库中的每个用户(即使是没有任何未完成的票证的用户——因此他们根本不应该收到任何东西,
$query="
SELECT *, COUNT(*)
FROM job, user
WHERE job.jobs_osuper=user.users_id
AND job.jobs_approverid2 = 0
GROUP BY user.users_id
";
$result=mysql_query($query);
mysql_close();
$num=mysql_num_rows($result);
$conditional1=mysql_result($result,$i,"users_id");
$conditional2=mysql_result($result,$i,"jobs_osuper");
$i = 0;
while($i<$num && $conditional1 == $conditional2)
{
$name=mysql_result($result,$i,"user_fullname");
$email=mysql_result($result,$i,"user_email");
$count=mysql_result($result,$i,"COUNT(*)");
$mailfrom = "from@email.com";
$mailbcc = "bcc@email.com";
$message = "<b>$name,</b><p>You have $count ticket(s) waiting on your approval. <a href='http://url.com'>Click here to review the tickets assigned to you.</a></p>";
mail($email, "Tickets for Approval", $message, "From: $mailfrom\r\nCC: $mailbcc\r\nContent-type: text/html\r\n");
$i++;
}
$query=”
选择*,计数(*)
来自作业、用户
其中job.jobs\u oseper=user.users\u id
和job.jobs\u approverid2=0
按用户分组。用户\u id
";
$result=mysql\u query($query);
mysql_close();
$num=mysql\u num\u行($result);
$conditional1=mysql\u result($result,$i,“users\u id”);
$conditional2=mysql_result($result,$i,“jobs_osuper”);
$i=0;
虽然($i您的脚本可能是由其他用户通过cron作业运行的。我不确定这是否会影响您的结果,但这在过去曾让我感到悲伤
您的cron命令应该如下所示:
sudo su www-data -c "php -q /wocs/email.php"
确保www数据是正确的用户-您可以通过在浏览器中运行echo get_current_user();
进行检查