PHP7.1でローカルで作成したWEBページをAWSのサーバ上に移行しようと考えています。
AWSのサーバ上でWEBページ自体は表示されますがMysqlへの接続が出来ません。
ローカル環境(XAMPP)ではCドライブにインストールしたMysqlに接続できるのですが、AWS上のMysqlにはphpから接続できません。
やってみた手順を記載します。
1)EC2でインスタンスを作成し、セキュリティグループ設定
【タイプ】-【プロトコル】-【ポート範囲】-【ソース】
HTTP-TCP-80-0.0.0.0/0
HTTP-TCP-80-::/0
SSH-TCP-22-0.0.0.0/0
MYSQL/Aurora-TCP-3306-0.0.0.0/0
2)TeratermからSSH接続
3)sudo yum install php71でphp7.1をインストール(同時にApacheもインストール)
4)同じく sudo yum install mysqlでmysqlをインストール
5)mysqlに接続し、データベースとテーブルを作成(DB名:Customers、テーブル名:company)
6)ローカル環境(XAMPP)でmysql(c:)に接続するテストファイルを作成(test.php)→接続OK (⑨の構文)
7)sudo chown -R ec2-user /var/www/htmlで権限付与
8)試しに/var/www/html上でindex.phpファイルを作成し、中身をphpinfo()だけにしてブラウザからEC2インスタンスのIP直打ちでini表示OK
9)TeratermのSSH SCPから、/var/www/html へphpファイル(test.php)送信
【test.phpの中身】
<?php $dsn = 'mysql:dbname=Customers;host=127.0.0.1;charset=utf8;'; $user = 'root'; $password = 'パスワード'; try{ $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM company"; $stm = $pdo->prepare($sql); $stm->execute(); $result = $stm->fetchAll(PDO::FETCH_ASSOC); foreach($result as $row){ echo $row['companyname']; echo '<br>'; } $pdo=null; } catch (PDOException $e){ echo '接続に失敗しました。'; echo 'Error:'.$e->getMessage(); exit(); } ?>
10)ブラウザからEC2インスタンスのIP/test.phpでアクセスすると真っ白な画面でエラーメッセージもなし
【わからないこと】
mysql外部接続やセキュリティなどを付け加えて検索したところ、my.cnfのbind-addressを変更すると書いてあるがmy.cnfを確認してもbind-addressがない
以下my.cnf(シャープは文字が大きくなるので全角に変換)
―――
[ec2-user@ip-**** etc]$ cat my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[ec2-user@ip-**** etc]$
―――
【試したこと】
mysql内で以下コマンドで外部接続許可設定をした
grant all privileges on . to root@"%" identified by 'PASSWORD' with grant option;
まだphpとmysqlを二カ月くらいしか触っていない初心者です。
原因と対処法等をお教え頂けますと幸いです。
【Mysqlバージョン】
mysql --version
mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using EditLine wrapper
【phpバージョン】
php -v
PHP 7.1.33 (cli) (built: Oct 31 2019 17:36:04) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
【Apacheバージョン】
httpd -v
Server version: Apache/2.4.41 (Amazon)
Server built: Oct 15 2019 22:21:35
回答2件
あなたの回答
tips
プレビュー