Задание Cron на cPanel не выполняется

#php #mysqli #cron #cpanel #whm

#php #mysqli #cron #cpanel #whm

Вопрос:

Я пытаюсь запустить cronjob в cPanel, который выдает мне следующую ошибку:

Неустранимая ошибка: неперехваченная ошибка: класс ‘mysqli’ не найден в /home/example/public_html/new_facebook_csv/csv_generator1.php:180

Если запустить этот файл через браузер, используя ссылку example.com/new_facebook_csv/csv_generator1.php я получаю правильные повторные запросы без каких-либо ошибок, но если я пытаюсь запустить его с помощью задания cron, я получаю сообщение об ошибке «Класс ‘mysqli’ не найден».

Задание cron, которое я выполняю, выглядит следующим образом:

 php /home/example/public_html/new_facebook_csv/csv_generator1.php > /home/example/public_html/new_facebook_csv/facebook.log
  

и вот журналы, которые я получаю после задания cron:

 X-Powered-By: PHP/7.3.22
Content-type: text/html; charset=UTF-8

<br />
<b>Fatal error</b>:  Uncaught Error: Class 'mysqli' not found in /home/example/public_html/new_facebook_csv/csv_generator1.php:180
Stack trace:
#0 {main}
  thrown in <b>/home/example/public_html/new_facebook_csv/csv_generator1.php</b> on line <b>180</b><br />
  

Я добавил расширение mysqli в php.ini (extension=php_mysql.dll ) но не повезло с этим.

Также проверьте, установлен ли mysqli на моем сервере с этим сообщением:

 php -m|grep mysql
  

и это был мой вывод

 mysqli
mysqlnd
pdo_mysql
  

это означает, что mysql установлен на моем сервере

Комментарии:

1. Вы добавили расширение для PHP cli? Я имею в виду, какой php.ini вы изменили

2. Я создал новый файл php.ini в той же папке, что и исполняемый файл (/home/example/public_html/php.ini)

3. похоже, версия PHP, используемая cron, не улавливает это. Возможно, используйте явный php, т.е. /usr/bin/php7.4 myscript.php и обновите php.ini для этого, если он предназначен для всего сервера. В противном случае, я думаю, вы можете включить ini, например /usr/bin/php7.4 -c /path/to/custom/ini myscript.php

4. Включение php.ini в команду cron решило мою проблему. Большое вам спасибо!

5. Заголовок вопроса вводит в заблуждение; задание выполняется, но оно выдает ошибки.

Ответ №1:

попробуйте с помощью curl, например /usr/bin/curl example.com/new_facebook_csv/csv_generator1.php

или вы можете использовать wget wget -q -O- example.com/new_facebook_csv/csv_generator1.php

Комментарии:

1. Похоже, что curl работает успешно без ошибок. Но все же я не понимаю, почему я получал ошибку mysqli

2. curl выполняет http-запрос, поэтому используется другой php. командная строка / cron будет запускать другую

3. Итак, mysqli включен для http-запроса, а не для запроса командной строки / cron?

4. я думаю, что это происходит

Ответ №2:

Вот как я запланировал задание cron в cPanel через GoDaddy, которое запускает скрипт и включает MYSQLI:

 curl -s "https://yourwebsite.com/phpscript.php"
  

введите описание изображения здесь

Я перепробовал много вариантов, включая пример cPanel при запуске PHP-скрипта с заданием cron. Я попробовал php перед путем к скрипту и тем же форматом, который вы использовали выше, а также предлагаемыми ответами, и я получил те же ошибки. Просто используйте curl -s, а затем URL-адрес вашего php-скрипта сделает свое дело.