ラズパイ3 + Jessie に PHP7.1 を APT でインストールする


# TL;DR

RaspberryPi3 + Jessie に PHP7 を APT で入れるには、[Mati75 さんが公開しているプライベート・リポジトリ](http://repozytorium.mati75.eu/)を APT の`sources.list`に追加して `apt-get update` したのち、`apt-get install` で PHP 本体とお好きな追加パッケージをインストールします。

<kbd>2018/03/30 02:42 現在 Mati75 さんのリポジトリ repozytorium.mati75.eu (94.130.188.161) はダウンしているようです。PINGは通るのですが。。。</kbd> [こちらで暫定回避](https://wouterdeschuyter.be/blog/quick-tip-install-php-7-on-raspbian-using-the-official-testing-branch)

# TS;DR

## はじめに
RaspberryPi3 をなんちゃって俺様 IoT の中継機にするため、デスクトップ環境なし（CLI 版）の [Raspbian Jesse Lite](https://www.raspberrypi.org/downloads/raspbian/) (Debian8.0) を入れたのですが標準で PHP は入っていません。

定番の PHP5 の記事は沢山あるのですが RPi3 に PHP7.1 をインストールする、まとまった記事が少ないので書いてみました。基本的には [@janit](https://www.symfony.fi/) さんの[記事](https://www.symfony.fi/entry/install-php-7-on-raspbian-raspberry-pi)を参考にしていますが、ソースからのコンパイルでなく `apt-get install` でインストールする方法に特化して書いています。

また、[janit 氏本人から許可をいただいた](http://disq.us/p/1khxepv)ので、近々翻訳した記事を書きたいと思います。

## リポジトリの追加
1. APT の参照先リストのファイル（`/etc/apt/sources.list`）に下記１行を追加します。

    ```
    deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
    ```
    最新のリポジトリを確認するには、[Mati75 さんのリポジトリのトップページ](http://repozytorium.mati75.eu/)で「Debian repository」にある「Repository with backports packages for Debian Jessie」を確認してください。

1. Mati75 さんのリポジトリの公開鍵を下記２つの `gpg` コマンドで登録します。

    ```
    gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
    gpg --armor --export CCD91D6111A06851 | apt-key add -
    ```

    最新のリポジトリの公開鍵は、参照先と同じく[Mati75 さんのリポジトリのトップページ](http://repozytorium.mati75.eu/)最下部にある「Repository keys」に記載されています。

1. APT パッケージのリストを `apt-get update` コマンドで更新して、変更を適用します。
    
    ```
    sudo apt-get update
    ```

1. 次項を参考に PHP をインストールします。   

## インストール

```
sudo apt-get -y install php7.1-fpm php7.1-dev php7.1-mysql php7.1-sqlite3 php7.1-gd php7.1-cgi php7.1-mbstring php7.1-curl php-pear php7.1-mcrypt php-xml-parser php7.1-gd php7.1-zip php7.1-xml php7.1-xmlrpc ssl-cert && sudo reboot
```
上記は、俺様 IoT 用に自分の RPi をコマンドベースで動かすために Apache は入れないで PHP7.1 をインストールする[ワンライナー](https://en.wikipedia.org/wiki/One-liner_program)なので、Apache も入れる場合や、無駄なくインストールされたい方は、次の項目の「PHP 本体のインストール」以降を参考にしてください。

### PHP 本体のインストール

#### Apache なし

```
sudo apt-get install php7.1-fpm
```

1. `php7.1-fpm`で一緒にインストールされるパッケージ
    1. php7.1-fpm  [[FPM](http://php.net/manual/ja/book.fpm.php)]
    1. libapparmor1 [[libapparmor1](https://packages.debian.org/jessie/libapparmor1)]
    1. php-common  [[PHP-Common](https://rpmfind.net/linux/rpm2html/search.php?query=php-common)]
    1. php7.1-common
    1. php7.1-cli [[CLI](http://php.net/manual/ja/features.commandline.php)]
    1. php7.1-json [[JSON](http://php.net/manual/ja/book.json.php)]
    1. php7.1-opcache [[OPcache](http://php.net/manual/ja/book.opcache.php)]
    1. php7.1-readline [[GNU Readline](http://php.net/manual/ja/book.readline.php)]


#### Apache あり

```
sudo apt-get install php7.1
```

1. `php7.1`で一緒にインストールされるパッケージ
    1. apache2
    1. apache2-bin
    1. apache2-data
    1. apache2-utils
    1. libapache2-mod-php7.1
    1. libapr1
    1. libaprutil1
    1. libaprutil1-dbd-sqlite3
    1. libaprutil1-ldap
    1. liblua5.1-0
    1. php-common
    1. php7.1
    1. php7.1-cli
    1. php7.1-common
    1. php7.1-json
    1. php7.1-opcache
    1. php7.1-readline
    1. ssl-cert

1. 推奨追加パッケージ

    ```
    sudo apt-get install www-browser apache2-doc apache2-suexec-pristine apache2-suexec-custom php-pear openssl-blacklist
    ```

### 大抵必要なもの

PHP 開発や外部のライブラリを使うなら下記を入れます。

1. php7.1-mbstring [[マルチバイト文字](http://php.net/manual/ja/book.mbstring.php)]
1. php7.1-curl [[cURL](http://php.net/manual/ja/book.curl.php)]
1. php-pear [[PEAR](https://pear.php.net/)]
1. php7.1-dev [[PHP-Devel](http://www.phcomp.co.uk/PackagesBackports/php-devel.html)]
1. php7.1-mcrypt [[Mcrypt](http://php.net/manual/ja/book.mcrypt.php)]
1. php7.1-zip [[ZIP](http://php.net/manual/ja/class.ziparchive.php)]]
1. php7.1-xml [[libxml](http://php.net/manual/ja/book.libxml.php)]


## その他の主な追加オプション

以下は、よく使われるオプションパッケージですが、普段使うサーバーで `phpinfo()` で追加されているモジュールを確認するのがベターかもしれません。

### メールを使う場合
1. php7.1-imap [[php-imap](http://php.net/manual/ja/book.imap.php)]

### 画像処理（縮小、トリミング、その他）
1. php7.1-gd

### DB を使いたい場合
1. php7.1-mysql
1. php7.1-sqlite3

### WEB アクセラレーター 
1. varnish [[Varnish](http://php.net/manual/ja/book.varnish.php)]

### XML-RPC を WEB サービスで使う場合 
1. php7.1-xmlrpc [[XML-RPC](http://php.net/manual/ja/book.xmlrpc.php)]



# 参考文献

- How to install PHP 7 (PHP-FPM & FastCGI) for ISPConfig 3 on Debian 8 (Jessie) @ HowtoForge<br>https://www.howtoforge.com/tutorial/install-php-7-on-debian-8-jessie/

- Turn your Raspberry Pi 3 into a PHP 7 powered web server @ Ste Wright<br>https://www.stewright.me/2016/03/turn-raspberry-pi-3-php-7-powered-web-server/

- Install and run PHP 7 on Raspbian (Raspberry Pi Debian) @ Symfony Finland<br>https://www.symfony.fi/entry/install-php-7-on-raspbian-raspberry-pi

- Raspberry PiにインストールしたOwncloud8をOwncloud9+PHP7.0にする方法 @ Qiita<br>http://qiita.com/ykarasu/items/e625c3f11cdb0f2d7c2a