бот telegram с cron и скриптом PHP - PullRequest
1 голос
/ 16 февраля 2020

на EC2

У меня есть такой crontab

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

Bot. php file

  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 работает.

Когда я открываю бота. php с firefox вызов API работает, и бот отправляет сообщение в Telegram, но скрипт PHP с curl не работает с Cron.

Я поставил htdocs и бот. php разрешения для 777 для тестирования, и это не сработало.

Есть идеи?

1 Ответ

3 голосов
/ 16 февраля 2020

Подсказка: я добавляю его в качестве ответа, поскольку моя репутация (на данный момент) ниже 50.

На данный момент мне потребуется дополнительная информация для поддержки. Здесь может быть несколько потенциальных проблем. Давайте посмотрим, сможем ли мы go по дороге вместе.

1. Делайте ошибки видимыми во время выполнения cron

В этом случае вы можете проверить свои логи внутри cron. Я бы предложил записать любой вывод в файл с помощью this на ваш 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'); 

Давайте посмотрим, достаточно ли этого для первоначальной идеи или нам нужно копать глубже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...