PHP¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. PHPとは¶
記入中...
02. セットアップ¶
インストール¶
▼ aptリポジトリから¶
# 外部リポジトリをインストールする。
$ apt -y install software-properties-common
# PHPのリポジトリを登録する。
$ add-apt-repository ppa:ondrej/php
$ apt-get update
# PHPをインストールする。
$ apt -y install php=1.0.0
Dockerfile¶
▼ Laravel、PHP-FPMを使用する場合¶
#===================
# Global ARG
#===================
ARG PHP_FPM_VERSION="<バージョン>"
ARG PHP_COMPOSER_VERSION="<バージョン>"
ARG LABEL="Hiroki <example@gmail.com>"
#===================
# Base Stage
#===================
FROM php:${PHP_FPM_VERSION}-fpm as base
RUN apt-get update -y \
&& apt-get install -y \
git \
vim \
unzip \
zip \
&& docker-php-ext-install \
bcmath \
pdo_mysql \
&& apt-get clean
COPY --from=composer:${PHP_COMPOSER_VERSION} /usr/bin/composer /usr/bin/composer
#===================
# Development Stage
#===================
FROM base as development
LABEL mantainer=${LABEL}
#===================
# Production Stage
#===================
FROM base as production
LABEL mantainer=${LABEL}
COPY ../software /var/www/foo/
03. 設定ファイルの種類 (※ Dockerの場合)¶
php.ini
ファイル¶
▼ php.ini
ファイルとは¶
PHPの起動時の値を設定する。
php.ini
ファイルは、/usr/local/etc/php
ディレクトリ配下に配置されている。
配置された任意のini
ファイルに実装された設定値が、ユーザー定義のカスタム値として読み込まれる。
また、それ以外の設定値はデフォルト値となる。
設定ファイルを切り分ける場合、/usr/local/etc/php/conf.d
ディレクトリ配下にcustom.php.ini
ファイルの名前で配置する。
$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: (none) # iniファイルがまだ配置されていない
Scan for additional .ini files in: /usr/local/etc/php/conf.d # 切り分けられた設定ファイルの場所
Additional .ini files parsed: /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
▼ 本番/開発環境用php.ini
ファイル¶
PHPでは、/usr/local/etc/php
ディレクトリにはphp.ini-development
ファイルとphp.ini-production
ファイルが最初から配置されている。
これをコピーして設定値を変更し、読み込まれるようにファイル名をphp.ini
に変えて配置する (これ以外のファイル名でjは読み込まれない) 。
代わりに、最小限の設定値のみを変更したphp.ini
ファイルを自身で作成し、同じく配置しても良い。
$ ls -la /usr/local/etc/php
drwxr-xr-x 1 root root 4096 Dec 2 13:39 .
drwxr-xr-x 1 root root 4096 Dec 2 13:39 ..
drwxr-xr-x 1 root root 4096 Dec 17 15:21 conf.d
-rw-r--r-- 1 root root 72382 Dec 2 13:39 php.ini-development
-rw-r--r-- 1 root root 72528 Dec 2 13:39 php.ini-production
# php.iniファイルをここに配置する
▼ 開発環境用php.ini
ファイル例¶
あらかじめ用意されているphp.ini-development
ファイルを参考に設定する。
元の値をコメントアウトで示す。
# 開発環境では、スタックトレースを表示
zend.exception_ignore_args = off # on
expose_php = on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M # 2M
post_max_size = 128M # 8M
memory_limit = 256M # 128M
# 開発環境では、全てのログレベルを出力
error_reporting = E_ALL # NULL
display_errors = on
display_startup_errors = on
# 開発環境では、ログをerror_log値へのパスに出力
log_errors = on # 0(off)
# 開発環境では、エラーログをファイルに出力
error_log = /var/log/php/php-error.log # NULL
default_charset = UTF-8
[Date]
date.timezone = Asia/Tokyo # GMT
[mysqlnd]
# 開発環境では、メモリに関するメトリクスのデータポイントを収集する。
mysqlnd.collect_memory_statistics = on # off
[Assertion]
zend.assertions = 1
[mbstring]
mbstring.language = Japanese
▼ 本番環境用php.ini
ファイル例¶
あらかじめ用意されているphp.ini-production
ファイルを参考に設定する。
元の値をコメントアウトで示す。
zend.exception_ignore_args = on
# 本番環境では、X-Powered-ByヘッダーのPHPバージョンを非表示
expose_php = off # on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
# 本番環境では、特定のログレベルを出力
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT # NULL
# 本番環境では、エラーを画面に非表示
display_errors = off # on
display_startup_errors = off
# 本番環境では、エラーログをerror_log値へのパスに出力
log_errors = on # 0(off)
# 本番環境では、エラーログを標準エラー出力に出力
error_log = /dev/stderr # NULL
default_charset = UTF-8
[Date]
date.timezone = Asia/Tokyo
[mysqlnd]
mysqlnd.collect_memory_statistics = off
[Assertion]
zend.assertions = -1
[mbstring]
mbstring.language = Japanese
# 本番環境では、Opcache機能を有効化
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.validate_timestamps = 0
opcache.huge_code_pages = 0
opcache.preload = /var/www/preload.php
opcache.preload_user = www-data
04. 拡張機能¶
OPcache¶
▼ OPcacheとは¶
通常、PHPのコードは実行の度にバイナリ形式のコードに変換される。
バイナリ形式のコードのキャッシュを作成しておき、コードが変更された時だけ変換する。
これにより、PHPのコードの実行が高速化される。