PHP Manual
/
サーバー管理

PHP およびサーバーの設定情報 (phpinfo()、php.ini)

22. 08. 2019

多くの場合、サーバーに関するできるだけ多くの情報を得る必要があります。ネイティブの `phpinfo()` 関数は、このような場合に最適です。

phpinfo();
die; // 設定を書き込んだら、スクリプトを終了する

これにより、インストールされているバージョン、拡張機能、ライブラリなどを簡単に確認することができます。

設定や変更方法については、本記事の最後をご覧ください。

特定のコンフィギュレーションセクションを検索する

特定の情報のみをリストアップするのが便利な場合もあるので、最初のパラメータを設定して、興味のあるものを正確に指定することができます。

phpinfo(INFO_MODULES);

設定にはあらかじめ定義された定数が使用される。

定数名|値|説明
INFO_GENERAL|1|一般的な設定、php.iniの場所、最終更新日、Webサーバー、システム情報、その他。
INFO_CREDITS
INFO_CONFIGURATION|4|現在の場所と設定のディレクティブ。より詳細な情報は ini_get() 関数で提供されます。
INFO_MODULES|8|インストールされたモジュールに関する情報です。詳しくは get_loaded_extensions() 関数を参照してください。
INFO_ENVIRONMENT|16| $_ENV として利用可能な Environment 変数に関する情報です。
INFO_VARIABLES|32| EGPCS` (Environment, GET, POST, Cookie, Server) と呼ばれるスーパーグローバル変数設定の概要です。
INFO_LICENSE|64|PHPの使用ライセンスやその他の使用条件に関する情報です。
INFO_ALL|-1|すべての情報を表示する(初期値)

スーパーグローバル変数 $_SERVER を使用する。

スクリプトの実行中に、サーバー設定に関するかなり多くの情報(ウェブマスターへのメール、訪問者の現在のIPアドレスや現在呼び出されているURLなど)を直接知ることができます。

既存の値をすべてリストアップするのは簡単です。

foreach ($_SERVER as $key => $value) {
echo $key . ':' . $value . '<br>。';
}

Warning: すべてのインデックスが存在する必要はありません (例えば、スクリプトがCLIモードでcronを実行する場合、ページのURLやリクエストのIPアドレスを持つインデックスは存在しません)。

特定の設定ディレクティブを読み込む

設定の多くは php.ini に格納されており、通常の方法では PHP から直接アクセスできません。例えば、最大アップロードファイルサイズなど。

設定を直接読み込むには、 ini_get() 関数を使用します (注意: この関数はすべてのサーバーで有効とは限りません。特にホストの場合に顕著です)。

例えば、アップロードできる最大ファイルサイズを調べたい場合、独自に実装を書かなければならない。

/**
* 著者 ヤン・バラシェック
*/
public static function getMaxUploadFileSize(): int
{
$maxUpload = min(
ini_get('投稿最大サイズ'),
ini_get('アップロードの最大ファイルサイズ')
);
if (strncmp($maxUpload, 'M', 1) === 0) {
return (int) str_replace('M', '', $maxUpload);
}
return (int) $maxUpload;
}

upload_max_filesizepost_max_size` の最大値を MB 単位で返します。

サーバーの構成と設定の変更

設定自体は php.ini ファイルに保存されます。その場所は phpinfo() 関数を使うか、php --ini コマンドを呼び出すことで簡単に見つけることができます。

> php --ini
Configuration File (php.ini) Path: /etc/php/7.1/cli
Loaded Configuration File: /etc/php/7.1/cli/php.ini
Scan for additional .ini files in: /etc/php/7.1/cli/conf.d
Additional .ini files parsed: /etc/php/7.1/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.1/cli/conf.d/10-opcache.ini,
/etc/php/7.1/cli/conf.d/10-pdo.ini,
/etc/php/7.1/cli/conf.d/20-calendar.ini,
/etc/php/7.1/cli/conf.d/20-ctype.ini,
/etc/php/7.1/cli/conf.d/20-exif.ini,
/etc/php/7.1/cli/conf.d/20-fileinfo.ini,
/etc/php/7.1/cli/conf.d/20-ftp.ini,
/etc/php/7.1/cli/conf.d/20-gd.ini,
/etc/php/7.1/cli/conf.d/20-gettext.ini

あるいは、パスを巧みに解析することもできます(Linuxシステムで動作します)。

php -r "phpinfo();" | grep php.ini

彼は戻ってきますよ。

Configuration File (php.ini) Path => /etc/php/7.1/cli
Loaded Configuration File => /etc/php/7.1/cli/php.ini

例えば、CLIの設定はCLIモード、つまりターミナルからcronやコマンドを呼び出すときのみ有効です。

アップロードファイルのサイズ制限を設定する

よくphp.iniで直接設定されるプロパティの例として、最大アップロードファイルサイズ(デフォルトは2MB、これは2018年現在すでに低い)があります。

設定ファイル内では、例えば次のように記述します。

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M
; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

*中点はコメント、その後に特定の設定ディレクティブが続くことを意味します。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024