## page was renamed from CentOS/YUMリポジトリ/Remi's RPM repository <> = 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セットアップ == ※本情報は若干古いですが、更新はあまり意味が無い(バージョン番号が変わるだけ)ので、そのままとします。 ||<#ffff00> '''リポジトリ名''' ||<#ffff00> '''デフォルト''' ||<#ffff00> '''GPGパス''' ||<#ffff00> '''所属パッケージ''' || || 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 ==== メモリ使用量等、デフォルトのリミッターがきつめかもしれないので自らの使用を措定して設定は見直してください。 {{{#!highlight diff --- /etc/php.ini.orig 2015-11-26 16:04:08.000000000 +0900 +++ /etc/php.ini 2016-08-16 00:21:14.278592318 +0900 @@ -363,7 +363,7 @@ ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ; http://php.net/expose-php -expose_php = On +expose_php = Off ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; @@ -372,7 +372,7 @@ ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI -max_execution_time = 30 +max_execution_time = 300 ; Maximum amount of time each script may spend parsing request data. It's a good ; idea to limit this time on productions servers in order to eliminate unexpectedly @@ -382,7 +382,7 @@ ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time -max_input_time = 60 +max_input_time = 120 ; Maximum input variable nesting level ; http://php.net/max-input-nesting-level @@ -393,7 +393,7 @@ ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit -memory_limit = 128M +memory_limit = 256M ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; @@ -660,7 +660,7 @@ ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size -post_max_size = 8M +post_max_size = 32M ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file @@ -808,10 +808,10 @@ ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize -upload_max_filesize = 2M +upload_max_filesize = 32M ; Maximum number of files that can be uploaded via a single request -max_file_uploads = 20 +max_file_uploads = 4 ;;;;;;;;;;;;;;;;;; ; Fopen wrappers ; }}} ==== /etc/php.d/timezone.ini ==== よく出る警告なので必ず設定します。 {{{#!highlight diff --- /etc/php.d/timezone.ini.orig 1970-01-01 09:00:00.000000000 +0900 +++ /etc/php.d/timezone.ini 2016-08-15 23:46:00.436613075 +0900 @@ -0,0 +1 @@ +date.timezone = Asia/Tokyo }}} 一つ忠告があるとすれば「サーバーの提供元はグローバル(UTC)かもしれないけど、 サービスの利用者(エンドユーザーしかり運用者しかり)はローカル時間である」 という点でしょうか。 OSレイヤーから上は利用者のローカル時間を前提としないと極度に混乱します。 ==== /etc/php.d/mbstring.ini ==== これもどう設定するかは用件によるので、設定例ということで。 {{{#!highlight diff --- /etc/php.d/mbstring.ini.orig 1970-01-01 09:00:00.000000000 +0900 +++ /etc/php.d/mbstring.ini 2016-08-15 23:47:21.735872137 +0900 @@ -0,0 +1 @@ +mbstring.language = Japanese }}} == Remi参考文献 == * [[http://blog.remirepo.net/pages/Config-en|Repository Configuration]] * [[http://qiita.com/pakiln/items/645e8a97cde46b59f9f8|CentOSにPHP5.6をインストール]] * [[http://qiita.com/bezeklik/items/74106f3ed528584293c3|Yum で任意のバージョンの PHP をインストールする]] * [[http://qiita.com/bezeklik/items/0823b14789d96f847d09|CentOSのPHPは本当に安全か]]