# php.ini 初期設定のいろいろ

php アップグレードや初期化したらいろいろ設定が必要ですね。設定が簡単ですが、忘れないようにメモ

設定ファイル (php.ini) は PHP の起動時に読み込まれます。
PHP 5.1.0 以降、ini ファイル内で既存の ini 変数を参照することが可能です。 例: open_basedir = ${open_basedir} ":/new/dir"

変数を参照することって!しかも 5.1 から使えるって知らなかった!設定ファイルの中で変数参照は面白そうですね。
どのシーンで使うかわかりませんけど、いざの時のためにあること覚えておいた方が良さそう。

php 設定ファイル (opens new window)

display_errors = off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_NOTICE
error_log = /home/user_name/hapicode.com/log/php_error.log

date.timezone = "Asia/Tokyo"
mbstring.language = Japanese

default_charset = UTF-8
mbstring.detect_order = auto

post_max_size = 30M
upload_max_filesize = 30M

max_execution_time = 60
max_input_time = 90

# error_reporting 設定

error_reporting 項目は出力する PHP エラーの種類を設定できます。
error_reporting()関数使うなら、いつでもどこでもその時の error_reporting 設定を変更することができます。
サーバー内の PHP を統一設定するなら php.ini に設定した方がいいでしょう。

PHP コアソースに定義されている「定義済み定数」を ini ファイルに設定しても関数で設定してもいつでも利用可能。

以下の定数を php.ini で使用することができますが、 httpd.conf のような PHP の外部では、 代わりにビットマスク値を使用する必要があります。

error_reporting 関数使う時、ビットマスクまたは名前つき定数のどちらかです。将来の バージョンとの互換性を保証するために、名前つき定数の使用が 強く推奨されています。

// 全てのエラー出力をオフにする
error_reporting(0);

// 単純な実行時エラーを表示する
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// E_NOTICE を表示させるのもおすすめ(初期化されていない
// 変数、変数名のスペルミスなど)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// E_NOTICE 以外の全てのエラーを表示する
error_reporting(E_ALL & ~E_NOTICE);

// 全ての PHP エラーを表示する
error_reporting(E_ALL);

// 全ての PHP エラーを表示する
error_reporting(-1);

// error_reporting(E_ALL); と同じ
ini_set('error_reporting', E_ALL);

よく使うエラーレポート定数

定数 説明
E_ALL 32767 サポートされる全てのエラーと警告
E_ERROR 1 重大な実行時エラー
E_WARNING 2 ワーニング警告
E_PARSE 4 コンパイル時のパースエラー
E_NOTICE 8 ノーティス警告

その他エラーレポート定数

定数 説明
E_CORE_ERROR 16 PHP コアエラー
E_CORE_WARNING 32 PHP コアワーニング警告
E_COMPILE_ERROR 64 コンパイル時の致命的なエラー
E_COMPILE_WARNING 128 コンパイル時の警告
E_USER_ERROR 256 ユーザー発行エラー
E_USER_WARNING 512 ユーザー発行ワーニング警告
E_USER_NOTICE 1024 ユーザー発行ノーティス警告
E_STRICT 2048 コード互換性を維持提案
E_RECOVERABLE_ERROR 4096 キャッチできる致命的なエラー
E_DEPRECATED 8192 実行時の注意
E_USER_DEPRECATED 16384 ユーザー定義の警告メッセージ

WARNING エラーと NOTICE エラーの違い

# xserver の php ini 設定

xserver 愛なので、xserver の設定も載せときます。

# エラー表示
display_errors = off

# エラーレポトする種類 エラーだけにする
# デフォルトE_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

# エラーログパス
error_log = /home/user_name/hapicode.com/log/php_error.log
[PHP]
engine = On
default_charset = UTF-8

error_log = /home/user_name/hapicode.com/log/error.log
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
display_errors = Off
display_startup_errors = Off

max_execution_time = 60
max_input_time = 90
memory_limit = 200M

allow_url_fopen = On
allow_url_include = Off
file_uploads = On

post_max_size = 30M
upload_max_filesize = 30M

register_argc_argv = Off
short_open_tag = On
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
disable_functions =
disable_classes =
expose_php = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
auto_globals_jit = On
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = On
default_socket_timeout = 60


[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none


[Date]
date.timezone = "Asia/Tokyo"


[Syslog]
define_syslog_variables = Off


[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i


[SQL]
sql.safe_mode = Off


[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1


[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off


[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off


[mSQL]
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1


[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0


[Sybase]
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off


[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10


[bcmath]
bcmath.scale = 0


[Informix]
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0


[Session]
session.save_handler = files
session.save_path = "/home/user_name/user_name.xsrv.jp/xserver_php/session"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 1
session.hash_bits_per_character = 5
session.use_strict_mode = 1


[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off


[Tidy]
tidy.clean_output = Off


[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400

[Zend Optimizer]
zend_extension = opcache.so
2020-10-29
  • php

関連記事

Laravel メンテナンスモード
Laravel でカテゴリー作成 テーブル構築と再帰クエリ
Laravel を API サーバーとしての初期設定
Laravel リクエストログ出力
Laravel 429 Too Many Requests
Laravel Email バリデーションについて
Laravel Sanctum 使って API トークン JWT 認証と SPA 認証
Laravel logger でエラーログを chatwork に自動送信
php CSV データ取得は fgetcsv 使う
Laravel tinker 使って DB データベース接続とコマンド
Laravel Test についてのメモ
Laravel Log の基本設定&使い方
Exception: Class 'ZipArchive' not found
Laravel Sail で Docker 環境構築
PHP 文字列長さ・文字列の幅を取得方法
Codeigniter 画像アップロードとリサイズ
Laravel Lumen Faker 日本語設定
laravel method の基本 get post put options
Laravel schedule 設定
Class 'Imagick' not found Error
Laravel eloquent model の規約
PHP mbconvertkana 全角半角英数カナ変換
Codeigniter APPPATH BASEPATH FCPATH 各種パスと URL 取得
Laravel timestamp() auto update 有効化無効化
Lumen8 で JWT ユーザー認証
Laravel toSql パラメータ付きで出力
Lumen8 で API 開発
php Exception エラーキャッチでメール送信
Smarty HTTP URL 取得できるサーバー関数
Laravel blade foreach loop と current url
laravel session を制する
PHP empty isset is_null の違い
PHP 8 リリース新機能と変更
FlattenException deprecated
Laravel 5.1 から 8.1 にバージョンアップ
PHP 7.4 にアップグレードして使えなくなる機能
開発時によく使うゼロ埋めパディング作業まとめ
解決!phpMyAdmin テーブル構造の内容が表示されない問題
Composer コマンドとオプション
爆速軽量フレームワーク codeigniter PHP 開発
Lumen と Laravel 違い比較
HTML から PDF に変換 PHP ライブラリ mPDF の設定
twig 3 人気 PHP テンプレートエンジンがバージョンアップ
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定
php curl 使って クリックなしで POST 送信
allowurlinclude の設定で ftp_connect()エラー
Carbon で php date 日付の日数・月数差を計算
codeigniter email ライブラリでメール送信 日本語対応
nuxtjs と codeigniter で jwt システム構築
正規表現一覧 よく使う検索・置換のパターン
Apache 初期設定メモ
開発におけるコーディングルール・規約