0

exec() を使用して PHP PDO 経由でデータベースに接続する際に、非常に紛らわしい問題に遭遇しました。

私の要点を説明するために、次のスニペットをまとめました。

$host = "localhost";
$db_name = "some_db";
$user_name = "some_user";
$pass_word = "some_password";

try {
// assign PDO object to db variable
$dbh = new PDO("mysql:host=$host;dbname=$db_name;charset=utf8", $user_name, $pass_word, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
echo "yahoo connected";
}
catch (PDOException $e) {
//Output error - would normally log this to error file rather than output to user.
echo "Connection Error: " . $e->getMessage();
}

ブラウザ経由でこのコードを実行すると正常に接続されますが、コマンド ラインで実行すると次のエラーが発生します。

Connection Error: SQLSTATE[28000] [1045] Access denied for user 'some_user'@'localhost' (using password: NO)

言うまでもなく、上記のコードでわかるようにパスワードが実際に設定されており、接続が機能し、ブラウザーの画面に yahoo が表示されるため、これは混乱を招きます。どんなアイデアでも大歓迎です。

4

1 に答える 1