我有一个通过cron运行的文件。该文件向用户发送电子邮件。
但有一个问题,问题是,当我通过浏览器打开文件时,PHP params用于邮件阅读正确的发件人已正确设置我所说的来自:
当文件由cron执行时,发件人会忽略并将Linux用户名和主机名作为发件人。
$headers = "";
$headers .= "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=utf-8" . "\n";
$headers .= "Content-Transfer-Encoding: 8bit". "\n";
$headers .= "Date: ".date("r"). "\n";
$headers .= "To: ". $users. "\n";
$headers .= "From: Somthing <no-reply@mydomain.com>" . "\n";
mail($to, "Remainder 1", "Message body", $headers);
Cron设置就像那样
/usr/local/bin/php -q /home/user/cron.php
答案 0 :(得分:0)
如果您使用这样的'/usr/local/bin/php -q /home/user/cron.php
',您将尝试从与浏览器中运行脚本不同的位置执行脚本。
如果您包含具有相对路径的脚本,则它们将100%失败。
像这样使用并试一试:'cd /home/user/; /usr/local/bin/php -q /home/user/cron.php
',这样就可以从它的位置运行脚本。
答案 1 :(得分:0)
我从不建议您使用cron运行PHP脚本。 原因是PHP几乎总是以不同的方式配置(具有不同的php.ini特定设置),而不是通过Apache运行。
我推荐的方式是通过wget。一步一步,您必须这样做:
cron.php
上传到您网站的文件夹中,或在同一服务器上可访问的某个位置,但在其自己的文件夹中。我们称之为cron-jobs
http://www.yoursite.com/cron-jobs/cron.php
如果您使用的是Apache,请创建一个包含规则的.htaccess
文件
Order Deny, Allow
Allow from 127.0.0.1
Deny from all
再次测试以确保您没有收到与htaccess规则相关的任何500错误。此规则确保除服务器本身外,没有其他人可以运行该脚本。
现在修改cron任务以像这样运行脚本
wget -q http://www.yoursite.com/cron-jobs/cron.php
您现在应该看到正确的From:
字段。