我有一个涉及数据库访问的php脚本。使用的凭据不是来自用户X.我从浏览器运行脚本,没问题。
但是当我从shell(或cron作业)运行时,我收到一个错误:
SQLSTATE [28000] [1045]拒绝访问用户' root' @' localhost' (使用密码:否)
PHP注意:未定义的变量:conn in ....
如果我从shell运行,以用户X身份登录,则出现相同的错误。
脚本中出现问题的函数:
function get_data_from_db($sql){//
$hostdb=DB_HOST; //DB credentials are stored in php.ini, retrieved in another part of the script
$namedb=DB_NAME;
$userdb=DB_USER;
$pwddb=DB_PASS;
try {
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb;", $userdb, $pwddb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
$statement = $conn->prepare($sql);
$statement->execute();
return $statement;
}
我尝试使用root用户的凭据,同样的问题
下面,获取凭据的功能在从CLI运行时失败
function loadConfig( $myapp, $vars = array() ) {
foreach( $vars as $v ) {
define( $v, get_cfg_var( $myapp.".cfg.$v" ) );
}
}
答案 0 :(得分:0)
您需要将数据库凭据添加到CLI版本php.ini
。它们目前仅在CGI或PHP-FPM版本中(以您的Web配置使用的为准)。