前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
ドットインストールでログインのシステムを動画を見ながら学習をしています。
ドットインストール上ではすでに質問の受付を終了していたのでこちらで質問をさせていただきたく思います。
発生した問題点はphpからmysqlのデータベースへ接続をしようとした際に以下のようなエラーメッセージが発生しました。
※php、mysqlどちらもdockerのコンテナに存在します。
発生している問題・エラーメッセージ
SQLSTATE[HY000] [2002] No such file or directory
該当のソースコード
signup.php
php
1<?php 2 3require_once(__DIR__ . '/../config/config.php'); 4 5$app = new MyApp\Controller\Signup(); 6 7$app -> run(); 8 9?> 10 11<!DOCTYPE html> 12<html> 13 <head> 14 <meta charset="utf-8"> 15 <title>Sign Up</title> 16 <link rel="stylesheet" href="styles.css"> 17 </head> 18 <body> 19 <div id="container"> 20 <form action="" method="post" id="signup"> 21 <p> 22 <input type="text" name="email" placeholder="email" value="<?= isset($app->getvalues()->email) ? h($app->getValues()->email) : '' ?>"> 23 </p> 24 <p class="err"><?= h($app->getError('email')); ?></p> 25 <p> 26 <input type="password" name="password" placeholder="password"> 27 </p> 28 <p class="err"><?= h($app->getError('password')); ?></p> 29 <div class="btn" onclick="document.getElementById('signup').submit();">Sign Up</div> 30 <p class="fs12"><a href="login.php">Log In<a></p> 31 <input type="hidden" name="token" value="<?= $_SESSION['token'] ?>"> 32 </form> 33 </div> 34 </body> 35</html> 36
Model.php
php
1<?php 2 3namespace MyApp; 4 5class Model{ 6 protected $db; 7 8 public function __construct(){ 9 try{ 10 $this ->db = new \PDO(DSN,DB_USERNAME,DB_PASSWORD); 11 }catch(\PDOException $e){ 12 echo $e->getMessage(); 13 exit; 14 } 15 } 16} 17
config.php
php
1<?php 2 3ini_set('display_errors',1); 4 5define('DSN','mysql:host=localhost;dbname=php_login'); 6define('DB_USERNAME','dbuser'); 7define('DB_PASSWORD','aaa'); 8 9define('SITE_URL','http://' . $_SERVER['HTTP_HOST']); 10 11 12 13require_once(__DIR__ . '/../lib/functions.php'); 14require_once(__DIR__ . '/autoload.php'); 15 16session_start(); 17 18 19
init.sql
sql
1create database php_login; 2 3grant all on php_login.* dbuser@local identified by 'aaa'; 4 5use php_login 6 7create table users( 8 id int not null auto_increment primary key, 9 email varchar(255) unique, 10 password varchar(255), 11 create datetime, 12 modified datetime 13); 14 15desc users; 16
docker-compose.yml
yml
1version: '3' 2services: 3 nginx: 4 image: nginx:latest 5 ports: 6 - 8080:80 7 volumes: 8 - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf 9 - ./www/html:/var/www/html 10 - ./www:/var/www 11 depends_on: 12 - php 13 14 php: 15 build: ./php 16 volumes: 17 - ./www/html:/var/www/html 18 - ./www:/var/www 19 depends_on: 20 - db 21 22 db: 23 image: mysql:5.7 24 ports: 25 - 13306:3306 26 volumes: 27 - ./mysql/data:/var/lib/mysql 28 environment: 29 MYSQL_ROOT_PASSWORD: secret 30 31 phpmyadmin: 32 image: phpmyadmin/phpmyadmin:latest 33 ports: 34 - 8888:80 35 depends_on: 36 - db
mba:php_login matsumotokazuma$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6560f6e61e00 nginx:latest "/docker-entrypoint.…" 2 hours ago Exited (0) 36 seconds ago php_login_pra_nginx_1 e61787c7e4dd php_login_pra_php "docker-php-entrypoi…" 2 hours ago Exited (0) 36 seconds ago php_login_pra_php_1 9c35994e1298 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 27 hours ago Exited (0) 35 seconds ago php_login_pra_phpmyadmin_1 f82cc7f849fd mysql:5.7 "docker-entrypoint.s…" 27 hours ago Exited (0) 33 seconds ago php_login_pra_db_1
実行方法
localhost:8080/signup.phpにて実行
・試したこと
config.phpのhost=localhost を host=dbに変更をした
補足情報(FW/ツールのバージョンなど)
学習環境:
php:7.2-fpm
mysql:5.7
nginx:latest
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。