RESTfm を利用する前の設定を行おう

# RESTfm を利用する前の設定を行おう
以前の記事と重複してしまう部分がありますが、RESTfm を本格的に利用する前の各種設定を行いましょう。

ここでは`RESTfm.ini.php`ファイルの設定に絞ります。`.htaccess`や`web.config`、HTTPS まわりの設定などは省略しますので、公式ドキュメントや以前の記事などを参考にしてください。

# RESTfm.ini.php ファイルを設定していく
`RESTfm.ini.php`は設定ファイルの総本山です。ここに全ての設定が詰まっています。配布ファイルの状態では`RESTfm.ini.php.dist`というファイル名になっていますので、内容を適切に設定した上でこのファイルを`RESTfm.ini.php`とリネーム（コピーした上でリネーム）しましょう。

では具体的に設定内容を見ていきます。

### baseURI
`baseURI`には、RESTfm のスクリプト一式をどこに配置したかを指定します。注意する点は、**URIのルートから**の位置である点と、**最後のスラッシュは不要**という点です。

例えば、http\://hogehoge.com/fuga/RESTfm に設置したとしたならば、以下のようになります。

```
'baseURI' => '/fuga/RESTfm',
```

### formats
`formats`には、有効にしたいURIの拡張子を配列で連ねていきます。`html`と`json`さえあれば（あと場合によっては`fmpxml`）十分だと思いますが、特に不要でもないので、そのままでいいと思います。

不要な拡張子があったらコメントアウトしましょう。

### formatNicely
`formatNicely`では、JSON や XML をいい感じに整形して見やすくしてくれるか否かを設定します。PHP の 5.4.0 未満で JSON 対象にこれを有効にするとオーバーヘッドが起きる点もあり、本番環境では推奨されていません。あくまでデバッグ用としての活用でしょう。

有効にしたい場合はもちろん TRUE にします。

### SSLOnly
`SSLOnly`ではその名のとおり、アクセスを HTTPS に限定するか否かを設定します。この設定を行う際は、Apache では`.htaccess`を、IIS では`web.config`も見直しましょう。

またこちらの設定を有効にする（TRUE にする）前には必ず`report.php`にアクセスして HTTPS の状態を確かめましょう。

### strictSSLCertsFMS
`strictSSLCertsFMS`では、RESTfm が FileMaker Server に接続する際、HTTPS の証明書を厳格に求めるかどうかを設定します。FileMaker Server が HTTPS を用いているか場合にのみ関係する設定項目です。

詳しくは[公式ドキュメント](http://www.restfm.com/restfm-manual/install/ssl-troubleshooting)にありますが、開発環境では無効、本番環境では有効、とするのが推奨されるようです。

### strictSSLCertsReport
`strictSSLCertsReport`では、前出の`strictSSLCertsFMS`と似たように、`report.php`にアクセスするために厳格な証明書が必要か否かを設定します。これも詳しくは[公式ドキュメント](http://www.restfm.com/restfm-manual/install/ssl-troubleshooting)を参照してください。

### forbiddenOnUnauthorized
`forbiddenOnUnauthorized`はその値が TRUE の際、HTTP のベーシック認証のポップアップを抑制し JavaScript での認証を用います。

ただし、HTML および TXT 形式のフォーマットへのアクセスではこの設定は無視されます。

### dumpData
`dumpData`を TRUE に設定すると、生成されるデータが`restfmdump.xxxxxxx`のようなサブディレクトリに保存されるようになります。ディレクトリの詳細な場所は`php.ini`の記述に従います。

なお、この設定を TRUE にすると、全ての HTTP リクエストに対して新たなサブディレクトリを生成するため、注意が必要です。

### diagnostics
`diagnostics`の主な目的は、`report.php`を有効にするか否かを設定することです。デフォルトでは TRUE になっていますが、本番環境では FALSE に設定して、パフォーマンスのアップや不要な情報表示を防ぐようにした方がいいでしょう。

また、`echo`という API の実行可否もこの設定で決まります。詳しくは[公式ドキュメント](http://restfm.com/restfm-manual/web-api-reference-documentation/submitting-data/uri-restfmdatabaseecho)を参照してください。

### hostspec
`hostspec`では FileMaker Server のアドレスを指定します。HTTP と HTTPS も区別されます。

FileMaker Server が localhost にある場合でも http\://localhost/ と指定するのではなく、http\://127.0.0.1/ と指定するほうが速度アップが見込めます。

また、localhost の場合は HTTPS を用いる必要はありません。

### useDefaultAuthentication
`useDefaultAuthentication`が TRUE の場合、ユーザー認証項目が明示的に設定されなければ`defaultUsername`と`defaultPassword`で指定されたユーザ名とパスワードを用いて FileMaker Server にログインが行われます。

### databasePDOMap
`databasePDOMap`は実験的な設定項目です。PHP の DSN の設定書式（下記）で記載することで、MySQL や SQLite などのデータベースに接続することができます。

```
'example1' => 'mysql:host=127.0.0.1;dbname=testdb',
'example2' => 'sqlite:/export/databases/testdb.sqlite3',
```

### keys
`keys`に配列を指定することで、FileMaker Server のユーザに対して API Key を発行することができます。API Key は API の認証に用いられます。

詳しくは[公式ドキュメント](http://restfm.com/restfm-manual/web-api-reference-documentation/authentication)を参照してみてください。

### allowed_origins
`allowed_origins`は、クロスサイトリクエストが発生する際に発生元のドメインを指定するために必要な設定項目です。Webアプリ が RESTfm がインストールされているドメインと異なるドメインで運用される場合などに設定します。

この設定はたいていの環境において必要ではないでしょう。

# 設定を確認してみる
以上の`RESTfm.ini.php`の設定が終わったら、実際に設定項目が正しく反映されているかの動作確認をしてみましょう。なお、リクエストの度に`RESTfm.ini.php`を参照する形式ですので、Webサーバ の再起動は必要ありません。`RESTfm.ini.php`を修正しては試し、修正しては試しといった設定方法でよいでしょう。