我完全难过了。我有一个文件,我需要每天运行两次查询数据库,并在满足某些条件时向我发送电子邮件。
这个文件,我们称之为abc.php,如果我在浏览器中输入“www.mysite.com/abc.php”,文件运行完美,效果很好。如果满足条件,我会收到一封电子邮件,说(例如)“所以,这里是信息:a,b,c。”
但是当我用cron调用该文件时,由于某种原因,电子邮件会出现乱码。我得到“这样,这里是信息部分”,但不是“a,b,c。”
我完全难过了。 “So so and so”也来自数据库,因为在两个地方都显示我知道db查询正在运行。
我无法理解为什么某些内容在http调用中可以正常工作但在通过cron调用时无效。是否应该以不同方式设置权限?以不同方式描述的目录树?我应该使用完整途径而不是相对途径吗?
在搜索中我发现一个似乎与php.ini文件有关的问题不同但我不认为这是因为我得到一个数据库查询。我不认为这是一个编码问题,因为它从浏览器调用时效果很好。但我怀疑它可能是由于路径设置错误或者cron作为不同的用户运行或需要不同的权限而引起的。
任何帮助或建议都会很棒。
编辑:这是cron线。我可以编辑它以匹配从浏览器运行文件时使用的php.ini吗?
/ramdisk/bin/php5 -c /my/home/php.ini /my/home/sendmetheemail.php
它是否也可能使用不同的mysql配置文件? php部分似乎工作正常,但这是有问题的数据。
刚刚测试过,wget工作正常:
wget http://mydomain.com/sendmetheemail.php
答案 0 :(得分:0)
你有一个单独的文件,你认为应该以相同的方式运行,但产生不同的结果,所以显然你的假设是错误的。
当我遇到这种困境时,我在代码中使用了一堆syslog(LOG_INFO,"Display some data.");
行。直接通过cron verses运行时检查它们之间的结果。如果一切都一样,那么你还没有解决问题。