Ошибка подключения к базе данных MySQL при использовании cron для запуска файла PHP - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно запускать файл PHP из задания cron каждые два часа, и я получаю сообщение об ошибке подключения к базе данных MySQL при запуске сценария PHP через cron. Сценарий работает правильно и точно так, как я ожидал, он будет запущен из браузера и даже из командной строки.

Я прочитал все ответы, найденные в результатах поиска Google, но ни один из них не смог решить мою проблему. Я не думаю, что есть какой-либо ответ, связанный с моей проблемой, поэтому я задаю этот вопрос.

Ниже приведен скрипт php для подключения к базе данных:

<?php

$cs = "localhost";
$cu = "root";
$cp = "mypassword";
// $cp = "";
$cn = "mydatabasename";

$conn = @mysqli_connect($cs, $cu, $cp, $cn);

if (!$conn) {
    die("Database connection error... " . mysqli_connect_error());
}

Я запускаю скрипт из браузера и из командной строки, все работает отлично, как я и ожидал, просто когда я запускаю его из cronjob, я получаю следующую ошибку:

Ошибка подключения к базе данных ... Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: НЕТ)

Предположим, что root, mypassword, mydatabasename являются правильными учетными данными, поскольку я могу успешно запустить скрипт в браузере и даже в командной строке. Я использую абсолютный путь к файлам PHP в cronjob.

Я запускаю cronjob по этой команде:

0 0-23/2 * * * php -f /var/www/html/project-name/execute-cronjob.php >> /var/www/html/project-name/output.log

Я использую Ubuntu и у меня VPS-сервер.

Пожалуйста, помогите мне решить проблему и сообщите, если вам нужна дополнительная информация по этому вопросу.

Заранее спасибо!

1 Ответ

0 голосов
/ 13 июня 2019

Используйте вместо этого сценарий оболочки

mysql --user=[username] --password=[password] --database=[db name] --execute="you query goes here"

здесь есть аналогичный ответ здесь

...