こんにちは、カヨです。
【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.ini の extension= 設定で有効化できる。 |
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をしている筆者ですが「かかりますよ~」「いつもスムーズに動いてるのはこの準備があるからなんです~」といってその他もろもろ数日準備期間いただきました。
なので、初めての方もそうでない方も一緒に頑張りましょうね。
参考サイト
