気づけばプロ並みPHPを終え、Pleskでサブドメインを立ち上げて実際の環境でも動くかの練習中です。
下記の.phpのコードで「気づけばプロ並みPHP」のログインをさせたいのですが、「ただいま障害により大変ご迷惑をおかけします」と出て上手く行きませんでした。
実現したいこと
・サブドメイン上で「気づけばプロ並みPHP」のPHPを動かしたいのでまずはログインを成功させたい。
発生している問題・エラーメッセージ
ただいま障害により大変ご迷惑をお掛けしております。 PDOException: SQLSTATE[HY000] [1045] Access denied for user 'ユーザー名'@'localhost' (using password: NO) in /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php:17 Stack trace: #0 /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php(17): PDO->__construct() #1 {main} SQLSTATE[HY000] [1045] Access denied for user 'ユーザー名'@'localhost' (using password: NO) or ただいま障害により大変ご迷惑をお掛けしております。 PDOException: SQLSTATE[HY000] [2002] Connection refused in /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php:17 Stack trace: #0 /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php(17): PDO->__construct() #1 {main} SQLSTATE[HY000] [2002] Connection refused or 504 Gateway Time-out nginx
該当のソースコード
練習していたPHPのバージョン→PHP version: 7.0.1 本番環境にしたいPHPのバージョン→PHP のバージョン: 7.4.27 ①staff_login_check.php <?php try { $staff_code=$_POST['code']; $staff_pass=$_POST['pass']; $staff_code=htmlspecialchars($staff_code); $staff_pass=htmlspecialchars($staff_pass); $staff_pass=md5($staff_pass); $dsn = 'mysql:dbname=shop; host=localhost; charset=utf8'; $user = 'ユーザー'; $password = 'パスワード'; $dbh = new PDO($dsn, $user, $passoword); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = 'SELECT name FROM mst_staff WHERE code=? AND password=?'; $stmt = $dbh->prepare($sql); $data[] = $staff_code; $data[] = $staff_pass; $stmt->execute($data); $dbh = null; $rec = $stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { print'スタッフコードかパスワードが間違っています。<br />'; print'<a href="index.html">戻る</a>'; } else { session_start(); $_SESSION['login']=1; $_SESSION['staff_code']=$Staff_code; $_SESSION['staff_name']=$rec['name']; header('Location: staff_top.php'); } } catch(PDOException $e) { print'ただいま障害により大変ご迷惑をお掛けしております。'; print '<br />'; print $e; print '<br />'; print $e->getMessage (); exit(); } ?> ②connect.php <?php $dsn = 'mysql:dbname=shop; host=localhost; charset=utf8'; $usr = 'ユーザー'; $passwd = 'パスワード'; try { $db = new PDO($dsn, $usr, $passwd); print '接続に成功しました。'; }catch (PDOException $e) { print "接続エラー:{$e->getMessage()}"; }finally{ $db = null; }
試したこと
エラーメッセージを出すためにprint $e->getMessageを入れた
$dsn = 'mysql:dbname=shop;host=localhost;charset=utf8'; のlocalhostを色々調べながら6パターン試してみました。
・host=localhost
・host=127.0.0.1
ただいま障害により大変ご迷惑をお掛けしております。
SQLSTATE[HY000] [1045] Access denied for user
using password: NO
↑のエラーが出てくる
・訳→ユーザーへのアクセスが拒否されました
・パスワードがあってない?
・Pleskの画面でユーザーを作成した
・Pleskからphpmyadminに飛んでホームのデータベースをクリックすると、「データベースを作成する権限がありません」
・phpmyadminをログアウトして作成したユーザー情報でログイン可能
・host=ドメイン(co-.jp)
・host=サブドメイン(.com)
・host=サブドメインのIPアドレス
・host=ホスト名
ただいま障害により大変ご迷惑をお掛けしております。
SQLSTATE[HY000] [2002] Connection refused
・訳→接続が拒否されました
追記8/16
・host=ドメイン:ポート
web表示
504 Gateway Time-out
nginx
Pleskから見たエラーログ
upstream timed out (110: Connection timed out) while reading response header from upstream
タイムアウトするようになった。これは合っている?
追記8/17
②のphpファイルを同じところに置いて直接URLを叩いて見たところ
接続に成功しましたと表示された。
ちなみにパスワードを空白に変えて間違えたものを用意したら
using password:NO
まで正しく表示された。
なので問題のプログラムも host = localhost に変更
出てきたエラーは
ただいま障害により大変ご迷惑をお掛けしております。
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'ユーザー'@'localhost' (using password: NO) in /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php:17 Stack trace: #0 /var/www/vhosts/ドメイン/サブドメイン/staff_login_check.php(17): PDO->__construct('mysql:dbname=sh...', 'ユーザー', NULL) #1 {main}
SQLSTATE[HY000] [1045] Access denied for user 'ユーザー'@'localhost' (using password: NO)
補足情報(FW/ツールのバージョンなど)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。