PHP
PDO
mamp
xserver

MAMPでローカル開発から、xserverのphpmyadminを使って、ローンチするまで。

phpの学習として、MAMP環境でWebサービスをローカルで開発したものの、

いざローンチするとなると、どうしていいかわからない。

そんな時のためのノートです。

【想定状況】

・ MANPで、phpmyadminを使ってお理、すでにDBにデータが入っている

・ DBとの接続に、PDOオブジェクトを使用している

・ ブログやポートフォリオ等で、すでにxserverを使用している


xserver側でやること

ではまず、下準備。

MAMPはローカル環境用なので、外部サーバーのxserverでの準備です。


xserverのサブドメインの申請

すでに、ドメインを持ってい人は、サブドメインを作成しましょう。

http://yahoo.co.jp

がメインドメインだとすると、サブドメインは

http://◯◯.yahoo.co.jp

となります。

新しいドメインとは異なり、無料かつお手軽に作成することができます。

xserverの「サーバーパネル」から

サブドメインの設定追加を行って行きます。

まずは

サーバーパネルから、ドメイン>サブドメイン設定

サブドメイン1.png

ドメイン選択画面から、サブドメインを作成したいドメインを選択

スクリーンショット 2019-04-15 16.17.39.png

サブドメインの設定追加をクリックし

サブドメイン3.png

実際に使用していくサブドメイン名(任意の文字列)を入力、

右下の確認画面で、サブドメインの申請は終了です!

(コメントは入力しなくても大丈夫です。)

無事、サブドメインが認証されるまで1時間〜半日ぐらいかかります。

(深夜に行っても2時間くらいで反映されました。)

スクリーンショット 2019-04-15 16.30.29.png


xserverのphppmyadminの作成

次にローカル環境で使用していたDBを移行してくるためのDB設定を行います。

サーバーパネルの

データベース>MySQL設定へ

スクリーンショット 2019-04-15 16.15.50.png

MySQL追加からDBの名前を入力します。

なんでもいいですが、今回「Egg」としました。

MySQL1.png

そうするとMySQL一覧のところに

「_Egg」というデータベースができています。

最初は、アクセス権未所有ユーザーのところに

自分のユーザーネームがあるので、アクセス権所有ユーザーに変更をしておいてください。

MySQL2.png

また後々、

MySQL ホスト名というところを使っていきますので

メモ帳なんかにコピーしておきます。


ローカル環境周りでやること

次にやるべきことはDBの移行です。

今までもphpMyAdminを使用していましたが、

xserverに、新しく作りましたのでそちらに移動させていきます。


phpMyAdiminへの移行

もともと使用していたphpMayAdminから

移行させたいDBを選択し、エクスポートを行います。

 phpmyadmin.png

詳しいやり方は以下のサイトを参考にしました。

https://inthecom.net/488

各項目にチェックをつけていき、

スクリーンショット 2019-04-15 16.53.11.png

最終的に、sqlファイルとして保存し、

移行先であるxserverのphpmyadminにインポートすれば、

DBの移行は終了です。


PDOオブジェクトの編集

サブアドレスも発行し、DBの移行も終わり、

あとは、xserver内にドキュメントを写すだけ....ではありません。

重要なDB接続の

PDOを変更する必要があります。

変更前までは$dsnのmyssql以下は

ローカルで開発していたため、

hostがlocalhostもしくは127.0.0.1でしたが

先ほどxserveでの設定時に出てきたhost名を入力する必要があります。

またそれに合わせて、DBnameも変更する必要があります。

変更前

function dbConnect(){

$dsn = 'mysql:dbname=egg;
host=localhost;
charset=utf8'
;
$user = 'root';
$password = 'root';
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO($dsn, $user, $password, $options);
return $dbh;
}

変更後

function dbConnect(){

$dsn = 'mysql:dbname=▲▲_egg;
host=◯◯.xserver.jp;
charset=utf8'
;
$user = 'DBのユーザー名';
$password = 'DBのパスワード';
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO($dsn, $user, $password, $options);
return $dbh;
}

変更後の

dsn文のdbnameとhostは

上で自分で決めたDB名とホスト名

DBのユーザー名とパスワードは

xserverでphpmydminに入るときに使用するやつです。


FTPソフトを使用した移行

あとは、FTPソフトを使用して移行していくだけです。

やり方は以下を参考にCyberDuckを使用していきました。

https://showtaki.com/30days-trial-3/

ファイルさえ移行しておけば

DBの接続を失敗していない限り、正常にサブドメインのアドレスで

Webページが表示されているはずです。


【困った時】SQLのエラーの一覧

これを行う上で、SQLのエラーとだいぶにらめっこしたので

まとめておきます。


ホスト名のエラー

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known


DB名のエラー

SQLSTATE[HY000] [1044] Access denied for user example@% to database 


ユーザー名のエラー

SQLSTATE[HY000] [1045] Access denied for user ‘◯◯’@127.0.0.1 (using password: YES)


最後に

役に立ったら、

いいねください!