目次
Remi’s RPMリポジトリ
- Remi's RPM repository は最新のPHP、5.4~5.6/7.0~7.2 のホスティングしているYUMリポジトリです。
- またPHPのメンテナンスポリシーに合わせて比較的簡単に消えていきます。
- CentOS6/7をサポートしています。CentOS5は表に出てませんが、一応残ってるようです。
- 最新のPHP使いたいならRemi一択かな。それ以外のリポジトリは評価したこと無いです。
- バージョン固定して長く使いたいならSCLsリポジトリを使用するのが吉です。
- 以下のリポジトリに依存しているので、先にセットアップしてください。 - EPEL
 
- また php-mysqlnd パッケージや php-pgsql パッケージは、それぞれのライブラリに依存しているため、使用するDBに合わせたライブラリを事前にインストールしておく必要があります。
- そうでない場合、CentOS標準の古いライブラリに依存するため、状況によっては使えない機能が発生する場合があります。
- 少なくともCentOS標準の mysql-libs パッケージは使えないようで、RemiリポジトリではわざわざMySQL5.5を提供しています。
- よって利用に合わせて事前にライブラリのインストールまたは更新を実施してください。 - php-mysqlnd → MySQLリポジトリ
- php-pgsql → PGDGリポジトリ
 
Remiセットアップ
※本情報は若干古いですが、更新はあまり意味が無い(バージョン番号が変わるだけ)ので、そのままとします。
| リポジトリ名 | デフォルト | GPGパス | 所属パッケージ | 
| remi | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php55 | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php55-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php56 | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php56-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php70 | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php70-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php70-test | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-php70-test-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-safe | 有効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-test | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
| remi-test-debuginfo | 無効 | /etc/pki/rpm-gpg/RPM-GPG-KEY-remi | remi-release | 
- デフォルトご覧の通りで remi-safe のみ、つまり「混ぜるな危険」を体現したデフォルトとなっています。
- これはインストール先ディレクトリの起点(トップディレクトリ)が「/」(ルート)では無いことを意味します(混ぜない)。
- よって通常の運用だと PATH を通す必要があったりと面倒があります。
- その代わり、複数バージョン(5.6 系、7.0 系など)を共存させたりできます。
- 同時に運用できるかは運用者の腕次第です。
CentOS7環境
yum -y install epel-release rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。
CentOS6環境
yum -y install epel-release rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm
※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。
CentOS5環境
yum -y install epel-release rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-5.rpm
※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。
CentOS4環境
ドキュメントを見ると存在するようですが、ここに書いた手順通り動くようには見えないので、スルーします。 2012年の更新を最後に、PHP5.3.10を使用したい向きの人は頑張ってください。
remi-phpXX リポジトリのアクティベイト
- /usr/bin/php として(混ぜます危険)使用したいPHPのバージョンを決めます(5.5, 5.6, 7.0)。
- remi リポジトリとバージョンに対応する remi-phpXX リポジトリをアクティベイトします。
- CentOS7およびCentOS6ではコマンドで設定できますが、一応設定ファイルを紹介しておきます。
- アクティベイトとは具体的に、/etc/yum.repos.d/remi.repo ファイルが下記のように enabled=1 になるよう設定します。
: [remi] : enabled=1 : [remi-php55] : enabled=0 : [remi-php56] : enabled=1 :
- ただし、PHP7.0については /etc/yum.repos.d/remi-php70.repo 【も】合わせて参照してください(remi.repo は必須です)。
: [remi-php70] : enabled=0 :
PHPのバージョンを変更したい(5.5 や 7.0 を使用したい)場合は、下記のように別途設定します。
CentOS7
yum-config-manager --enable remi remi-php70
※yum-config-manager コマンドは yum-utils パッケージのインストールが必要です。
CentOS6
yum-config-manager --enable remi remi-php70
※yum-config-manager コマンドは yum-utils パッケージのインストールが必要です。
CentOS5
/etc/yum.repos.d/remi.repo および /etc/yum.repos.d/remi-php70.repo の当該 enabled 行を変更します。 CentOS5の yum-utils パッケージには yum-config-manager コマンドを提供していません。
アップデート
※何かあったような…。あとで再度検証する。
Remiのインストール例
PHPのインストール
yum -y install php php-opcache php-mbstring
PHPをどう使うかによるので、どういうライブラリが必要になるかについては特に議論しない。 たぶん上記例くらいは当たり前に入れるんでないかな。
PHPの初歩的な設定
/etc/php.ini
メモリ使用量等、デフォルトのリミッターがきつめかもしれないので自らの使用を措定して設定は見直してください。
   1 --- /etc/php.ini.orig   2015-11-26 16:04:08.000000000 +0900
   2 +++ /etc/php.ini        2016-08-16 00:21:14.278592318 +0900
   3 @@ -363,7 +363,7 @@
   4  ; threat in any way, but it makes it possible to determine whether you use PHP
   5  ; on your server or not.
   6  ; http://php.net/expose-php
   7 -expose_php = On
   8 +expose_php = Off
   9 
  10  ;;;;;;;;;;;;;;;;;;;
  11  ; Resource Limits ;
  12 @@ -372,7 +372,7 @@
  13  ; Maximum execution time of each script, in seconds
  14  ; http://php.net/max-execution-time
  15  ; Note: This directive is hardcoded to 0 for the CLI SAPI
  16 -max_execution_time = 30
  17 +max_execution_time = 300
  18 
  19  ; Maximum amount of time each script may spend parsing request data. It's a good
  20  ; idea to limit this time on productions servers in order to eliminate unexpectedly
  21 @@ -382,7 +382,7 @@
  22  ; Development Value: 60 (60 seconds)
  23  ; Production Value: 60 (60 seconds)
  24  ; http://php.net/max-input-time
  25 -max_input_time = 60
  26 +max_input_time = 120
  27 
  28  ; Maximum input variable nesting level
  29  ; http://php.net/max-input-nesting-level
  30 @@ -393,7 +393,7 @@
  31 
  32  ; Maximum amount of memory a script may consume (128MB)
  33  ; http://php.net/memory-limit
  34 -memory_limit = 128M
  35 +memory_limit = 256M
  36 
  37  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  38  ; Error handling and logging ;
  39 @@ -660,7 +660,7 @@
  40  ; Its value may be 0 to disable the limit. It is ignored if POST data reading
  41  ; is disabled through enable_post_data_reading.
  42  ; http://php.net/post-max-size
  43 -post_max_size = 8M
  44 +post_max_size = 32M
  45 
  46  ; Automatically add files before PHP document.
  47  ; http://php.net/auto-prepend-file
  48 @@ -808,10 +808,10 @@
  49 
  50  ; Maximum allowed size for uploaded files.
  51  ; http://php.net/upload-max-filesize
  52 -upload_max_filesize = 2M
  53 +upload_max_filesize = 32M
  54 
  55  ; Maximum number of files that can be uploaded via a single request
  56 -max_file_uploads = 20
  57 +max_file_uploads = 4
  58 
  59  ;;;;;;;;;;;;;;;;;;
  60  ; Fopen wrappers ;
/etc/php.d/timezone.ini
よく出る警告なので必ず設定します。
一つ忠告があるとすれば「サーバーの提供元はグローバル(UTC)かもしれないけど、 サービスの利用者(エンドユーザーしかり運用者しかり)はローカル時間である」 という点でしょうか。
OSレイヤーから上は利用者のローカル時間を前提としないと極度に混乱します。
/etc/php.d/mbstring.ini
これもどう設定するかは用件によるので、設定例ということで。
