ラズパイで作る自宅WEBサーバ構築
第5回 PHP 設定 2019.11.05
PHPは The PHP Group によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語です。サーバーサイドで動的なウェブページ作成するために使用します。
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
◇php インストール
パッケージの有無を確認します
$ dpkg --get-selections | grep php
利用できるパッケージのバージョンを確認します
$ apt-cache show php
Depends: php7.2
$ apt-cache show libapache2-mod-php
Depends: libapache2-mod-php7.2
インストール可能なコンポーネントを検索します
$ apt-cache search php | grep php7.2 | more
libapache2-mod-php7.2 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.2 - server-side, HTML-embedded scripting language (metapackage)
php7.2-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.2-cli - command-line interpreter for the PHP scripting language
php7.2-common - documentation, examples and common module for PHP
php7.2-curl - CURL module for PHP
php7.2-dev - Files for PHP7.2 module development
php7.2-gd - GD module for PHP
php7.2-gmp - GMP module for PHP
php7.2-json - JSON module for PHP
php7.2-ldap - LDAP module for PHP
php7.2-mysql - MySQL module for PHP
---- (以下省略) ----
PHP をインストールします
$ sudo apt-get -y install libapache2-mod-php7.2 php7.2 php7.2-cgi php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-ldap php7.2-mysql php7.2-mbstring php7.2-imap php7.2-xml
もちろん後からコンポーネントの追加も可能なので、必要に応じてパッケージ(拡張モジュール)を追加してください。
インストール済みの拡張モジュールを確認します
$ php -m
[PHP Modules]
calendar
Core
ctype
curl
--- (以下省略) ----
ここで、Apache Web サーバを再起動します。
$ sudo /etc/init.d/apache2 restart
◇設定ファイル php.ini の編集
設定ファイル php.ini は動作環境によって参照されるファイルが異なります。
コマンドラインで参照される php.ini の確認
$ php --ini | grep php.ini
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File: /etc/php/7.2/cli/php.ini
Apache WEBサーバで参照される php.ini の確認
$ vi /home/example/www-root/phpinfo.php
<?php phpinfo(); ?>
ブラウザから
http://192.168.11.21/phpinfo.php
ここでは、Apaceh Web サーバーから参照される設定ファイルを編集します。
公開サーバ、開発・検証用サーバなど用途に応じて検討してください。
php.ini は公開サーバーの設定を使い、.htaccess などで設定を上書きして、開発・検証用サーバに適用してもよいと思います。
$ sudo vi /etc/php/7.2/apache2/php.ini
default_charset = UTF-8 ← デフォルト文字コード
mbstring.language = Japanese ← デフォルトの言語
date.timezone = Asia/Tokyo ← タイムゾーンの設定
expose_php = Off ← HTTPレスポンスによるPHPバージョン非表示
;mbstring.internal_encoding = ← PHP5.6以降で非推奨
;mbstring.http_input = ← PHP5.6以降で非推奨
;mbstring.http_output = ← PHP5.6以降で非推奨
log_errors = On ← エラーログをファイルに残す
error_log = /var/log/php_error.log ← エラーログの場所
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ← エラー関連の留意点参照
display_errors = Off ← エラー非表示
display_startup_errors = Off ← PHP起動時エラー非表示
session.name = PHPSESSID
session.use_trans_sid = 0
session.use_cookies = 1
Debian系OSでは、拡張モジュールの設定は、php.ini では行いません。(php.ini で extension の指定は必要ありません)
PHPエラー関連の留意点
PHP7からE_STRICTが深刻度により、E_NOTICE、E_WARNING、E_DEPRECATED のいずれかに割り振られます。定数 E_STRICT は残っているのでエラーにはならないようです。
E_DEPRECATED:実行時の注意。これを有効にすると、 将来のバージョンで動作しなくなるコードについての警告を受け取ることができる。
E_WARNING:実行時の警告 (致命的なエラーではない)。スクリプトの実行は中断さ れません。
E_NOTICE:実行時の警告。エラーを発しうる状況に遭遇したことを示す。 ただし通常のスクリプト実行の場合にもこの警告を発することがありうる。
セッション関連の留意点
session.use_trans_sid = 0
これを有効(1)にして、PHPのセッション管理機能を使うと、セッションIDを含むURLが生成されます。
利用者が、emailにより友人にセッションIDを含むURLを送信した場合、ユーザ名・パスワードなしにサイトにログインされてしまう可能性があります。
URLに基づくセッション管理は、Cookieに基づくセッション管理と比べ てセキュリティリスクが大きくなります。
session.use_cookies = 1
クライアント側にセッ ションIDを保存する際にクッキーを使用するかどうかを指定します。デフォルトは1 (有効)です。
session.name = PHPSESSID
Cookieの名前が PHPSESSID で、値がセッションIDになります。
セキュリティー上、セッション名は変更しておいたほうが無難です。
拡張モジュールの設定
Debian(Ubuntu) で PHP 5.4 から拡張モジュールの設定ファイルの構成が変わっています。
拡張モジュールの設定ファイルを置くディレクトリ /etc/php/7.2/apache2/conf.d/ のすべてのファイルがリンクファイルへ変更され、
/etc/php/7.2/mods-available/ (PHP7.2の場合)という新しいディレクトリに、拡張モジュールの設定ファイルの実態を置くようになりました。
aptでインストールした際に、ここに拡張モジュール設定が追加されます。
$ ls -l /etc/php/7.2/apache2/conf.d | more
10-mysqlnd.ini -> /etc/php/7.2/mods-available/mysqlnd.ini
10-opcache.ini -> /etc/php/7.2/mods-available/opcache.ini
10-pdo.ini -> /etc/php/7.2/mods-available/pdo.ini
15-xml.ini -> /etc/php/7.2/mods-available/xml.ini
20-calendar.ini -> /etc/php/7.2/mods-available/calendar.ini
20-ctype.ini -> /etc/php/7.2/mods-available/ctype.ini
20-curl.ini -> /etc/php/7.2/mods-available/curl.ini
---- (以下省略) ----
Apache WEBサーバを再起動します
$ sudo /etc/init.d/apache2 restart
これで、PHP の設定は終了です。
次回は MySQL の設定を行います。
|