簡體   English   中英

帶有 cron 和 PHP 腳本的電報機器人

[英]telegram bot with cron and PHP script

在 EC2 上

我有一個這樣的 crontab

* * * * * /usr/bin/php /opt/bitnami/apache2/htdocs/bot.php

bot.php 文件

  1 <?php
  2 
  3 exec( 'touch /opt/bitnami/apache2/htdocs/testCron.txt');
  4 
  5   $botToken="xxxxxxxxxxxxx";
  6 
  7   $website="https://api.telegram.org/bot".$botToken;
  8   $chatId=123456;  
  9   $params=[
 10       'chat_id'=>$chatId,
 11       'text'=>'test bitnami',
 12   ];
 13   $ch = curl_init($website . '/sendMessage');
 14   curl_setopt($ch, CURLOPT_HEADER, false);
 15   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 16   curl_setopt($ch, CURLOPT_POST, 1);
 17   curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
 18   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 19   $result = curl_exec($ch);
 20
 21   if ($result === FALSE) {
 22      echo 'An error has occured: ' . curl_error($ch) . PHP_EOL;
 23   }
 24   else {
 25      echo $result;
 26   }
 27 
 28   curl_close($ch);
 29 
 30 ?>

testCron.txt 被創建,以便 cronTab 工作。

當我用 firefox 打開 bot.php 時,API 調用有效並且機器人在 Telegram 上發送了消息,但是帶有 curl 的 PHP 腳本不適用於 Cron。

我將 htdocs 和 bot.php 權限設置為 777 進行測試,但它不起作用。

任何的想法?

提示:我將其添加為答案,因為我的聲譽(截至目前)低於 50。

截至目前,我需要更多信息才能提供支持。 這里可能存在多個潛在問題。 看看我們能不能一起走下去。

1. 在 cron 執行期間使錯誤可見

在這種情況下,您可以檢查您的 cron 中的日志。 我建議通過 this to your cron >> /var/log/my-cron.log 2>&1將任何輸出記錄到文件中。

* * * * * /usr/bin/php /opt/bitnami/apache2/htdocs/bot.php >> /opt/bitnami/apache2/htdocs/testCron.log 2>&1

從這里我們可以檢查是否有任何執行錯誤、權限錯誤或一些錯誤配置。

2. 檢查您的錯誤日志配置

可能是您的錯誤未顯示。 這是一些配置的一個很好的起點

// tells your script to report any error
error_reporting(E_ALL); 

// tells your script to enable error logging and the location where it should log to
ini_set('log_errors', '1'); // tells your script to enable logging
ini_set('error_log', '/dev/stderr'); 

讓我們看看這是否足以獲得初步想法,或者我們是否需要更深入地挖掘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM