SIerからWeb系に転職したやつの日記

タイトルの通り大手SIerからWeb系に転職した、世間一般的には変な奴のブログです。技術的な成長記録を書いていこうと思います。筆者とともに成長するブログです。今は初心者のような内容しか書いてませんが、そのうち上級者のようなブログになってるはずです。

PHPの初期設定をしてみた

今日はLinuxubuntu)上でPHPを動作させるための初期設定で行ったことをまとめたいと思います。

基本的に設定することはあまりないのですが、こういうちょっとした細かいことって忘れてしまいそうなので。。。

php.iniの設定

php.iniの設置場所を確認する

インストールした状態のままだと、日本語の設定としてはちょっと足りないというか中途半端だそうなので変更したいと思います。

私のようにlampでインストールしてる人は、/etc/php/7.0/apache2にphp.iniがあるはずなのでまずは存在を確認します。
f:id:regponpon:20180202164451p:plain

ありますね。これをvimで開いて編集しちゃいましょう。

default_charsetの設定

文字コードUTF-8を使っていきたいと思いますので、この設定になっているか確認します。
ここで、vimの使い方ですがやはりこういうファイル内では検索したいですよね。
vimにもこういう機能があるはず。ということでググったらありました。

/[検索文字列]・・・・・検索文字列をカーソルのある位置より下方向に検索
?[検索文字列]・・・・・検索文字列をカーソルのある位置より上方向に検索
n・・・・・・・・・・/や?で検索したのちに次の候補に飛ぶ
N・・・・・・・・・・/や?で検索したのちに前の候補に飛ぶ

こんなところでしょうか。

なので、vimのコマンド上で/default_charsetと打てばそこまで飛べます。

f:id:regponpon:20180202165919p:plain

私の場合は最初からUTF-8なってましたね。

date.timezoneの設定

サイトを運営したりする中でもしかしたら時刻情報を取り扱うかもしれませんね。
例えば会員制のサイトならログイン日時の管理なんかに使ったりします。

その基準となる時間帯をdate.timezonで設定します。
検索してみたら、「;date.timezone=」となっていて無効化されていました。
なので日本時間にするために「date.timezone=Asia/Tokyo」としました。

f:id:regponpon:20180202165937p:plain

mbstringを設定する

日本語文字はマルチバイトなので、それに関する設定をmbstringで行います。
私が設定した個所は以下の通りです。

mbstring.language

デフォルトの言語を日本語にします。
f:id:regponpon:20180202170818p:plain

mbstring.encoding_translation

HTTP入力動作上での変換を有効にします。
f:id:regponpon:20180202170910p:plain

mbstring.detect_order

文字コードの検出優先順位をUTF-8のみが検出されるようにします。
f:id:regponpon:20180202170955p:plain

mbstring.substitute_character

無効な文字が入力された場合の代替となる文字を何も出力しないように設定します。
f:id:regponpon:20180202171054p:plain

この設定を入れることで、PHPのファイル作成時も文字コードUTF-8を使用しなくてはなりません。
IDEの設定もきちんとしておくべきですね。

セキュリティについて

今のところ、ここで作ったサイトを外部に公開予定はないのであまり気にするところではありませんが今後のためにちょっとまとめておきます。

expose_php

ヘッダからPHPのバージョン情報を載せないようにします。
f:id:regponpon:20180202171523p:plain

session.sid_length

セッションIDの文字列の長さを22~256の範囲で指定できます。
デフォルトだと22です。また、php.iniにはこの記載はありませんので加えてあげる必要があります。
sessionに関する設定は「/session.」で検索すればたくさん出ますのでその近辺に書いてあげるといいかもしれません。

session.sid_length = 50

みたいな感じで定義します。

セッションの情報が抜き取られないようにするためにはこの辺はデフォルトじゃないほうがいいですよね。
PHP7.1以降から対応しているようです。
必要性を感じるのであればアップグレードしておくといいですね。
私はまだ7.1に及んでいないのでそのうちやろうと思います。。。

session.sid_bits_per_character

これはエンコードされたセッションIDの文字を何ビットにするかを指定できるところになってます。
こちらもsession.sid_lengthと同様でPHP7.1以降から対応しており、php.iniにはその記載がないので追加してやる必要があります。

session.sid_bits_per_character = 5

みたいな感じで設定してあげるとよいみたいです。

もちろん数字はそれぞれで考えて設定してあげて、セキュリティを高める必要がありますね。

PHPの動作確認

PHPのファイルを作ってみる

Apache2が導入された時点ですでにサイトが立っているので、そいつを利用してPHPの動作確認をしてみましょう。

まず、デフォルトのサイトのDocumentrootを確認します。
これは/etc/apache2/sites-availableの000-default.confに設定されています。

f:id:regponpon:20180202172944p:plain

この場合だと「/var/www/html」ですね。
ここにはすでにindex.htmlがあるので、一つディレクトリを作ってその中にtest.phpを作ってみます。

流れとしては、

$ cd /var/www/html
$ mkdir test
$ cd test
$ touch test.php
$ vi test.php

って感じですね。
mkdirでディレクトリを作り、touchでファイル作成です。

作成したPHPファイルにはこのように記載します。

<?php
phpinfo();
?>

これはPHPのバージョン情報などを出力する関数で、テストによく用いられるそうです。
PHPの記載の仕方ものタグ内で定義して記載するんですね!
javaC#と同じように行の末尾は「;」を使うようです。

これでさっそく見れるかどうか試してみましょう。

と、その前にいろいろPHPの設定を変えたのでApacheを再起動しておきます。

$ sudo service apache2 restart

PHPをブラウザで確認

さっそく見れるかどうか確認してみましょう。
Documentrootにtestディレクトリを作成し、その中にtest.phpを作成したので、URLは
http://localhost/test/test.php
になりますね。

f:id:regponpon:20180202174124p:plain

はい、見れますね!
とりあえず今日はここまでにして、次回以降でもう少しスクリプトを書いていこうと思います。