HetemlサーバーにComposerを入れてWordPressで.envを使う

GitHubのお供に`.env`。

# はじめに

[Heteml公式のドキュメント](http://heteml.jp/support/manual/ssh/ "SSH のご利用方法（ヘテムル）")を参考にSSHでサーバー接続できるようにしておく。

# PHPのパスを通す

```
$ echo "export PATH=\$PATH:/usr/local/php7.1/bin" >> ~/.bashrc
$ source ~/.bashrc

$ php -v
PHP 7.1.14 (cli) (built: Feb 13 2018 16:49:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.0.2, Copyright (c) 2002-2017, by ionCube Ltd.
    with Zend OPcache v7.1.14, Copyright (c) 1999-2018, by Zend Technologies
```

# Composerを入れる

[公式サイトの手順](https://getcomposer.org/download/)に沿ってComposerを入れる。

```
$ cd
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php', stream_context_create( array( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false))));"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified

$ mkdir bin
$ echo "export PATH=\$PATH:~/bin" >> ~/.bashrc
$ source ~/.bashrc

$ php composer-setup.php --install-dir=bin --filename=composer
All settings correct for using Composer
Downloading...

Composer (version 1.7.2) successfully installed to: /home/users/2/doocts/bin/composer
Use it: php bin/composer

$ php -r "unlink('composer-setup.php');"
```

パスを通す。

```

$ echo "export PATH=\$PATH:~/bin/composer" >> ~/.bashrc
$ source ~/.bashrc

$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.7.2 2018-08-16 16:57:12

Usage:
...
```

# Composerを使う

`composer init` して適当にエンターを連打すると `composer.json` ができる。

```
$ cd web/example.com/
$ composer init

  Welcome to the Composer config generator

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [heteml/example.com]:
```

# .envを入れる


```
$ composer require vlucas/phpdotenv
Using version ^2.5 for vlucas/phpdotenv
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing vlucas/phpdotenv (v2.5.1): Downloading (100%)
Writing lock file
Generating autoload files
```

# WordPressのconfigファイルを書き換える

```diff:wp-config.php
...
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //

+ if(file_exists(__DIR__ . '/vendor/autoload.php')) {
+   require_once __DIR__ . '/vendor/autoload.php';
+   $dotenv = new Dotenv\Dotenv(__DIR__);
+   $dotenv->load();
+ }
+ if(file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
+   require_once dirname(__DIR__) . '/vendor/autoload.php';
+   $dotenv = new Dotenv\Dotenv(dirname(__DIR__));
+   $dotenv->load();
+ }

/** WordPress のためのデータベース名 */
- define('DB_NAME', 'abcde');
+ define('DB_NAME', getenv('DB_NAME'));

/** MySQL データベースのユーザー名 */
- define('DB_USER', 'fghij');
+ define('DB_USER', getenv('DB_USER'));

/** MySQL データベースのパスワード */
- define('DB_PASSWORD', 'klmno');
+ define('DB_PASSWORD', getenv('DB_PASSWORD'));

/** MySQL のホスト名 */
- define('DB_HOST', 'opqrs');
+ define('DB_HOST', getenv('DB_HOST'));
...
```

`.env` ファイルを作って設定を書き込む。

```:.env
DB_NAME=abcde
DB_USER=fghij
DB_PASSWORD=klmno
DB_HOST=opqrs
```

`.gitignore` に `.env` を追加したらできあがり。