面对我一个奇怪的现象。
有一个 php 脚本,当它启动时,从数据库中提取一些值,形成一个变量并通过 bot 将其值发送到 Telegram。
如果脚本是通过浏览器手动运行的,则整个消息都会按预期到达 Telegram。
如果脚本由 cron 运行,那么 Telegram 会收到一条没有变量值的消息。
下面是用cron写的:
59 23 * * * /usr/bin/php /var/www/myhost.ru/public_html/_tze/cron_script.php
脚本代码:
$message = "Повестка дня:\r\n";
$i=1;
$_tasks = mysqli_query($connection, "SELECT `title` FROM `tze_tasks` ");
while ($tasks = mysqli_fetch_assoc($_tasks) )
{
$message = $message."\r\n".$i.". ".$tasks['title'];
$i++;
}
file_get_contents('https://api.telegram.org/bot276781699:AAFY6PZ7icBbHP1XZS582Pt
RzHGhoPezb6U/sendMessage?chat_id='.$chat_id.'&text='.urlencode($message));
可能是什么问题呢?
与发布的脚本内容相关的更新:它显然不是设计为在独立模式下运行(它使用发生在站点内部某处的数据库连接),因此唯一合理的出路是使用浏览器并访问 http- 服务器,即 下面的第二个选项。
由此我们可以得出结论,我们正在讨论调用解释器之前由 http 服务器设置的众多环境变量之一
php。两个出口:
您可以在调用解释器时指定此变量及其值:
你可以不直接访问解释器,而是通过带有某种“浏览器”的 http 服务器 -
wget等curl:可能需要在脚本开头添加:
但它不会通过浏览器运行