我的服务器上有一个cron.php文件,它与数据库建立连接并执行一些功能。当我使用浏览器执行此文件时,它运行良好。但是当它从cron执行时,它在建立数据库连接时会给出以下错误:
ERROR: SQLSTATE[28000] [1045] Access denied for user 'USER_NAME'@'localhost' (using password: YES)<br />
我搜索了很多,但不知道该怎么办。有什么想法吗?
编辑:基本上,这是我的cron.php:
<?php
require_once('phpInclude/db_connection.php');
error_reporting(1);
$sql_qry = "select email, apn_id, reg_id, token from users where verify = 'n' and DATEDIFF(NOW(),created_on) = 3";
$res=$con->query($sql_qry);
?>
我db_connection.php:
<?php
require_once('config.php');
try {
$dsn = 'mysql:host='.$DB_HOST.';dbname='.$DB_DATABASE;
$con = new PDO($dsn, $DB_USER, $DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$DB_HOST = LOCALHOST;
$DB_DATABASE = DB_NAME;
$DB_USER = USER_NAME;
$DB_PASSWORD = USER_PASS;
?>
我的配置.php:
define('LOCALHOST','localhost');
define('USER_NAME','xxxxxxxxxxx');
define('USER_PASS','xxxxxxxxxx');
define('DB_NAME','xxxxxxxxxx');
define("UPLOAD_PATH","xxxxxxxxxxxx");
define("BASE_PATH","xxxxxxxxxxxxxx");
问题已解决。我正在我的配置.php文件中进行本地主机检查。起初,我使用 wamp 在 localhost 上制作了 Web 服务,所以配置是 localhost。后来,我将项目移到了我的服务器上。我通过添加以下内容更改了配置:
if(server="http://myserver.com")
//take server config
else
//take localhost config
cron 服务在 else 子句中选择了配置。
CRON 通常从 CLI 运行,因此它可能不会像浏览到 cron.php 时那样从 webroot 访问此文件。尝试将要求更改为绝对路径:
require_once __DIR__ . 'phpInclude/db_connection.php';