【PC導入/環境構築】「php.iniの設定」 【PHP導入の手順】

プログラミング

こんにちは、カヨです。

今回のお題は、
「php.iniの設定」
PHP導入の備忘録・手順

最近、使用しているPCの調子が優れなく、新しいPCを新調。環境構築でPHPが必要で導入しました。こういう作業は大切な割に数年に1回しかしなかったりして毎回躓いたり時間がとられたりするので記録しておくことにしました。

 

こんな方に読んでいただきたいと思っています!

✔︎PHPをこれから導入しようとしている人
php.iniの設定にいつも戸惑ってしまう人
PHPを使ったプロジェクトにジョインしようとしている人

 

 

 

前提

・Windows
・PHP 7.0.11
・PHPのインストールが終わり、php.iniを設定する段階である

 

 

php.iniを編集する前に

編集前に必ずバックアップを取りましょう。

php.ini.bak

php.iniをコピーしてファイル名の後ろに.bakなどをつけるとバックアップになります。

 

 

 

php.iniの設定

設定一覧

必要なものささっと変更したいか方はこちらで確認↓

short_open_tag = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_log = "c:\php\php-7.0.11-nts-Win32-VC14-x86\tmp\error.log"
extension_dir = "c:\php\php-7.0.11-nts-Win32-VC14-x86\ext"
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
fastcgi.logging = 0
upload_tmp_dir = "c:\php\php-7.0.11-nts-Win32-VC14-x86\upload"
extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll 
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysqli.dll
extension=php_openssl.dll
date.timezone = Asia/Tokyo
mysqlnd.collect_memory_statistics = Off
session.save_path = "c:\php\php-7.0.11-nts-Win32-VC14-x86\session"
zend.assertions = -1
mbstring.language = Japanese
mbstring.internal_encoding = "UTF-8"
mbstring.http_output = "UTF-8"

 

 

設定前後表と意味

初めての設定で設定前後や意味を知りたい方はこちら↓
※書いてある設定はさきほどと一緒です。

設定前 設定後 備考
short_open_tag
= Off
short_open_tag
= On
<? のショートタグを許可する設定。ただし、新しいPHPでは非推奨。
error_reporting
= E_ALL
error_reporting
= E_ALL & ~E_DEPRECATED & ~E_STRICT
すべてのエラーを表示するが、非推奨警告 (E_DEPRECATED) と厳格なエラー (E_STRICT) は除外する 設定。
;error_log
= syslog
error_log 
= “c:\php\php-7.0.11-nts-Win32-VC14x86\tmp\error.log”
PHPのエラーログを指定したファイルに出力する設定
; extension_dir
= “ext”
extension_dir
= “c:\php\php-7.0.11-nts-Win32-VC14-x86\ext”
PHPの拡張モジュール(.dll)が格納されているディレクトリを指定する設定。

このディレクトリ内の .dll ファイルを php.iniextension= 設定で有効化できる。
IIS/
;cgi.force_redirect
= 1
cgi.force_redirect
= 0
CGI版のPHPが動作する際のリダイレクト制御を無効にする設定
  ;cgi.fix_pathinfo
=1
cgi.fix_pathinfo
=1
CGI版のPHPが PATH_INFO を適切に処理できるようにする設定。
Win
+IIS/
;fastcgi.impersonate
= 1
fastcgi.impersonate
= 1
FastCGI環境でPHPがリクエスト元のユーザー権限を引き継ぐ(偽装する)ことを許可する設定。
 〇 ;fastcgi.logging
= 0
fastcgi.logging
= 0
FastCGI環境でPHPのエラーログをFastCGIのログとして出力しないようにする設定
;upload_tmp_dir =
upload_tmp_dir
= “c:\php\php-7.0.11-nts-Win32-VC14-x86\upload”
アップロードされた一時ファイルを保存するディレクトリを指定する設定。
  ;extension
=php_bz2.dll
extension=
php_bz2.dll
bzip2 圧縮を扱う PHP 拡張モジュールを有効化する設定。
  ;extension
=php_curl.dll
extension
=php_curl.dll
cURL(クライアントURLリクエストライブラリ)を使用可能にする PHP 拡張モジュールを有効化する設定。
  ;extension
=php_fileinfo.dll
extension
=php_fileinfo.dll
ファイルのMIMEタイプや情報を判別する PHP の拡張モジュールを有効化する設定。
  ;extension
=php_gd2.dll
extension
=php_gd2.dll
GD(Graphics Draw)ライブラリを有効化する PHP の拡張モジュールの設定。
  ;extension
=php_gettext.dll
extension
=php_gettext.dll
PHPで国際化(i18n)とローカライズ(L10n)をサポートするGettext拡張を有効化する設定。
  ;extension
=php_mbstring.dll
extension
=php_mbstring.dll
マルチバイト文字(日本語・中国語・韓国語など)を正しく処理するための PHP 拡張モジュールを有効化する設定。
  ;extension
=php_exif.dll
extension
=php_exif.dll
画像ファイル(JPEG, TIFF)のEXIF(Exchangeable Image File Format)データを取得するための PHP 拡張モジュールを有効化する設定。
  ;extension
=php_mysqli.dll
extension
=php_mysqli.dll
MySQLデータベースとPHPを接続するための「MySQL Improved(MySQLi)」拡張を有効化する設定。
  ;extension
=php_openssl.dll
extension
=php_openssl.dll
OpenSSLを使用して暗号化やHTTPS通信を行うためのPHP拡張モジュールを有効化する設定。
;date.timezone =
date.timezone
= Asia/Tokyo
PHPのデフォルトのタイムゾーンを「日本時間(JST)」に設定するためのオプション。
mysqlnd.collect_memory_statistics
= On
mysqlnd.collect_memory_statistics
= Off
MySQL Native Driver(mysqlnd)がメモリ使用状況の統計を収集する機能を無効化する設定。
;session.save_path
= “/tmp”
session.save_path
= “c:\php\php-7.0.11-nts-Win32-VC14-x86\session”
PHPのセッションデータを保存するディレクトリを指定する設定。
zend.assertions
= 1
zend.assertions
= -1
PHPのアサーション(assert())の動作を制御する設定。
;mbstring.language
= Japanese
mbstring.language
= Japanese
mbstring(マルチバイト文字列処理)のデフォルトの言語を「日本語」に設定するオプション。
;mbstring.internal_encoding =
mbstring.internal_encoding
= “UTF-8”
マルチバイト文字列処理(mbstring)のデフォルトの内部エンコーディングをUTF-8に設定するオプション。
;mbstring.http_output =
mbstring.http_output
= “UTF-8”
mbstring を使用する際のHTTPレスポンスの出力エンコーディングを UTF-8 に設定するオプション。

※◎はどの環境でも必要そうな項目。IISやWindowsに限るものは記載あり。〇はほぼ必須の推奨項目。

 

 

結論

① ほぼすべての環境で推奨するもの

  • error_reporting, error_log, date.timezone, mbstring, session.save_path, zend.assertions = -1

② パフォーマンス向上のため推奨

  • opcache.huge_code_pages, fastcgi.logging, mysqlnd.collect_memory_statistics

③ 環境ごとに調整が必要

  • cgi.force_redirect, cgi.fix_pathinfo, fastcgi.impersonate, extension_dir

④ 必要な機能に応じて設定

  • extension=php_xxx.dll 系は、プロジェクトで使う機能による

→ 結局、どの設定がベストかは用途とサーバー環境次第!

 

お疲れ様です!
設定完了できましたでしょうか!

 

その他

php.iniを設定する際に知ったことをまとめておきます。

 

php.iniは最初から存在しないこともある。

その場合はphp.ini-developmentというファイルがPHPをダウンロードした際のファイルにあると思うのでそれをコピーして「php.ini」を作成する。

 

PHPのバージョンによってphp.iniの内容が変わることがある

筆者はPC移行作業での環境構築だったので一旦前のPCのバージョンに合わせてダウンロードしました。なので、以前使用していたphp.iniをコピーしてきてそのまま使用する方法も可能でしたがバージョンが違う資料を参考にする際は少し注意。ただ、そこまで全然違うイメージはなかったので気負わず設定しちゃおう!

 

php.iniってどこ?

PHPをダウンロードしたファイル内にある。ただ、そういわれても初めての際はどこにあるか筆者も迷ったので自分の環境下だけどパスをヒントに書いておこう。これが必ずではないがPC自体にダウンロードしたならきっとこのあたりにあるはず。

"C:\php\php-7.0.11-nts-Win32-VC14-x86\php.ini"

 

バージョンによってphp-の先は変わるのでご自身のダウンロードしたものを確認しよう。

 

設定したものが反映されているかの確認方法

phpinfo.phpを作成してwww直下のにおいてアクセスしてみよう。中身は以下。ローカルなのでloclhost:でポート番号/phpinfo.phpでwww直下に配置していたら見られるはず。

<?
  php phpinfo( );
?>

こういう画面が出てくるはず。

個人的になのですが、最初この表示上の画像の内容しか見られないと思っていたのですがスクロールするとphp.iniの設定全部みられるんですね~。知らなかった今回初めて下の下までスクロールしてみたけど長かった。

 

 

 

あとがき

今回は設定内容だけに絞ったけど、PHPをダウンロードしたりそれをきちんと配置したり、バージョンを考えたり、composerというPHPを管理するものがいるとかなんとか。。。そもそも、PHPを導入してもそのPHPでかかれたコードあってプロジェクトが動いてOKなわけで。やっぱプログラミング関連は準備が大変ですね。

PCの環境構築だけでそんなにかかるの?という視線をいただきながら、一般の会社のSEをしている筆者ですが「かかりますよ~」「いつもスムーズに動いてるのはこの準備があるからなんです~」といってその他もろもろ数日準備期間いただきました。

なので、初めての方もそうでない方も一緒に頑張りましょうね。

 

 

参考サイト

php.iniファイルの作成と初期設定
PHP に関する設定を記述する php.ini ファイルはデフォルトでは作成されていません。用意されている雛形を使って新しく作成する必要があります。ここでは php.ini ファイルの作成方法、 php.ini ファイルに対して行っておく初期設定、および php.ini の設定内容を確認するための phpinfo 関数...
タイトルとURLをコピーしました