php.ini マルチバイト関連の設定について
<php.ini>
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese
--------------------------------------------------------------------------
mbstring.internal_encoding
マルチバイト関数全体に適用される設定。
<同等の関数>
mb_internal_encoding()
--------------------------------------------------------------------------
mbstring.language
メールにしようされるマルチバイト文字にだけ関係する設定。
<同等の関数>
mb_language()
--------------------------------------------------------------------------
↑↑↑↑↑↑
これらの事前設定もしくは関数による処理をしておくことで
mb_send_mail関数によるマルチバイト設定を考慮したメールを送信できる。
メール送信はmail関数もあるが日本語のメールを送信する場合、
mb_send_mail関数をしようすることでマルチバイトを考慮したメールを送信できるので
こちらを使うようにする。
※mb_send_mail関数を使用する場合は上記のような設定か処理を行った上で関数を使用する。
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese
--------------------------------------------------------------------------
mbstring.internal_encoding
マルチバイト関数全体に適用される設定。
<同等の関数>
mb_internal_encoding()
--------------------------------------------------------------------------
mbstring.language
メールにしようされるマルチバイト文字にだけ関係する設定。
<同等の関数>
mb_language()
--------------------------------------------------------------------------
↑↑↑↑↑↑
これらの事前設定もしくは関数による処理をしておくことで
mb_send_mail関数によるマルチバイト設定を考慮したメールを送信できる。
メール送信はmail関数もあるが日本語のメールを送信する場合、
mb_send_mail関数をしようすることでマルチバイトを考慮したメールを送信できるので
こちらを使うようにする。
※mb_send_mail関数を使用する場合は上記のような設定か処理を行った上で関数を使用する。
スポンサーサイト
SendMail インストール
【 必要パッケージ 】
・ sendmail-8.14.2.4-fc9.i386 (本体:デフォルトでインストールされていることも)
・ sendmail-cf-8.14.2.4-fc9.i386 (m4マクロ使用に必須)
※バージョン(ディストリビューション名の部分など)はこの限りではないが、本体とm4の使用の際に必要になるcfパッケージは必ずインストールしなければならない。
[root@linux ~]# yum -y install sendmail-cf ← sendmail-cfインストール
・ sendmail-8.14.2.4-fc9.i386 (本体:デフォルトでインストールされていることも)
・ sendmail-cf-8.14.2.4-fc9.i386 (m4マクロ使用に必須)
※バージョン(ディストリビューション名の部分など)はこの限りではないが、本体とm4の使用の際に必要になるcfパッケージは必ずインストールしなければならない。
[root@linux ~]# yum -y install sendmail-cf ← sendmail-cfインストール
FTPサーバ構築:vsftpd
Webサーバへのファイル転送用にFTPサーバを構築する。
ここでは、Fedora標準のFTPサーバーであるvsftpdを採用する。
Fedoraインストール時に同時にオプション設定でvsftpdもインストールできる。
以下はプリインストールしなかった場合を想定して手順を進める。
[ vsftpd インストール ]
[root@linux ~]# yum -y install vsftpd ← vsftpdインストール
[ vsftpd設定 (実際の設定ファイルを以下に示す:コメントを参照の事) ]
***** /etc/vsftpd/vsftpd.conf *****
# Example config file /etc/vsftpd/vsftpd.conf
# 匿名ログイン
anonymous_enable=NO
# ローカル登録されているユーザのログイン許可(デフォルトではanonymousしかログインできない)
local_enable=YES
# 書き込み権限を持たせる
write_enable=YES
# umask077 → permision700
# umask022 → permision755 を表す
local_umask=022
# 匿名ユーザの書き込み権限(明示指定)
anon_upload_enable=NO
# 匿名ユーザのディレクトリ作成権限(明示指定)
anon_mkdir_write_enable=NO
# '.message'ファイルを表示させる(注意書き等に使用される)
dirmessage_enable=YES
# ログ出力を有効にする。Fedoraのデフォルトは/var/log/xferlogファイルである。
xferlog_enable=YES
# データ転送ポートの20番を使用する。ただしrootで実行する。
connect_from_port_20=YES
# 匿名ユーザが書き込んだファイルの所有者変更の許可(明示指定)
chown_uploads=NO
# ログ出力先
xferlog_file=/var/log/vsftpd.log
# ログ出力形式を標準にする
xferlog_std_format=YES
# アイドル時間によるセッションリリース時間(タイムアウト)
#idle_session_timeout=600
# データ転送中断時間によるセッションリリース時間(タイムアウト)
#data_connection_timeout=120
# ASCIIモード(text形式ファイル)の転送許可
ascii_upload_enable=YES
ascii_download_enable=YES
# ログイン時のメッセージ
ftpd_banner=Welcome to blah FTP service.
# メールアドレスの不使用(anonymous使用時はNO)
#deny_email_enable=YES
# chrootリスト有効
chroot_list_enable=YES
# chroot リストファイル指定(chrootファイルに指定しているユーザのみchrootする)
chroot_list_file=/etc/vsftpd/chroot_list
# ディレクトリごと一括での転送有効
ls_recurse_enable=YES
# IPV6モードでstandaloneモードにする(xinetdを経由しない)
# listen_ipv6=YES
# pam認証で使用するサービス名指定(vsftpdで使用するpamファイル名を指定)
pam_service_name=vsftpd
# /etc/vsftpd/user_listで指定されたユーザはログイン不可(NO:user_listに関係なく全ユーザ許可)
userlist_enable=YES
# /etc/hosts.allow・denyを使用したアクセス制限を行う
tcp_wrappers=NO
# FTPログイン時のディレクトリ指定(各ユーザのホームディレクトリ以下)
# ※同時に/etc/skel(ユーザ作成時のホームディレクトリテンプレート)に
# mkdirでpublic_htmlを追加。
local_root=public_html
# タイムスタンプ時間を日本時間(ローカルタイム)に合わせる
use_localtime=YES
# パッシブモードの利用
# (データ転送用ポートを20以外を使用。
# 使用するポートはpasv_min_port・pasv_max_portで指定。
# 制御用のLISTENポートは21。)
pasv_promiscuous=YESpasv_addr_resolve=YES
# パッシブモード時の使用ポートの指定
pasv_min_port=60000
pasv_max_port=60030
# ※↓以下、任意設定事項
#pasv_addr_resolve=YES
#pasv_address=threonine.santos55.webhop.net
#ssl_enable=YES
#rsa_cert_file=/etc/pki/tls/certs/vsftpd.pen
#force_local_logins_ssl=NO
#force_local_data_ssl=NO
[ chroot用のファイルを作成 ]
各ユーザのホームディレクトリより上層へのアクセスを許可するユーザの登録
[root@linux ~]# echo username >> /etc/vsftpd/chroot_list
[ FTPサーバーへのアクセスを禁止するユーザの登録]
上記の設定で
userlist_enable=YES
とは、/etc/vsftpd/user_listに書かれているユーザからのFTPアクセスを拒否する設定である。
デフォルトで、/etc/ftpd/user_listにはその時点でFedoraに登録されているユーザ他がリストアップされている。
これらのユーザを「#」で全てコメントアウトし、拒否したいユーザだけコメントを外すと良い。
つまり、今回はuser_list内の全ユーザをコメントアウトする。
上記の設定で
userlist_enable=YES
とは、/etc/vsftpd/user_listに書かれているユーザからのFTPアクセスを拒否する設定である。
デフォルトで、/etc/ftpd/user_listにはその時点でLinuxに登録されているユーザ他がリストアップされている。
これらのユーザを「#」で全てコメントアウトし、拒否したいユーザだけコメントを外すと良い。
つまり、今回はuser_list内の全ユーザをコメントアウトする。
また、/etc/vsftpd/ftpusersに記載されているユーザも拒否されるので注意!
[ pam認証用ファイルの設定 ]
上記の設定ではPAM認証(モジュール)を利用しているので、vsftpd専用のpamファイルの内容を変更する。
***** /etc/pam.d/vsftpd *****
#%PAM-1.0
# ↓以下3行をコメントアウト
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
[ vsftpd再起動・自動起動設定 ]
# service vsftpd restart
# chkconfig --level 345 vsftpd on
ここでは、Fedora標準のFTPサーバーであるvsftpdを採用する。
Fedoraインストール時に同時にオプション設定でvsftpdもインストールできる。
以下はプリインストールしなかった場合を想定して手順を進める。
[ vsftpd インストール ]
[root@linux ~]# yum -y install vsftpd ← vsftpdインストール
[ vsftpd設定 (実際の設定ファイルを以下に示す:コメントを参照の事) ]
***** /etc/vsftpd/vsftpd.conf *****
# Example config file /etc/vsftpd/vsftpd.conf
# 匿名ログイン
anonymous_enable=NO
# ローカル登録されているユーザのログイン許可(デフォルトではanonymousしかログインできない)
local_enable=YES
# 書き込み権限を持たせる
write_enable=YES
# umask077 → permision700
# umask022 → permision755 を表す
local_umask=022
# 匿名ユーザの書き込み権限(明示指定)
anon_upload_enable=NO
# 匿名ユーザのディレクトリ作成権限(明示指定)
anon_mkdir_write_enable=NO
# '.message'ファイルを表示させる(注意書き等に使用される)
dirmessage_enable=YES
# ログ出力を有効にする。Fedoraのデフォルトは/var/log/xferlogファイルである。
xferlog_enable=YES
# データ転送ポートの20番を使用する。ただしrootで実行する。
connect_from_port_20=YES
# 匿名ユーザが書き込んだファイルの所有者変更の許可(明示指定)
chown_uploads=NO
# ログ出力先
xferlog_file=/var/log/vsftpd.log
# ログ出力形式を標準にする
xferlog_std_format=YES
# アイドル時間によるセッションリリース時間(タイムアウト)
#idle_session_timeout=600
# データ転送中断時間によるセッションリリース時間(タイムアウト)
#data_connection_timeout=120
# ASCIIモード(text形式ファイル)の転送許可
ascii_upload_enable=YES
ascii_download_enable=YES
# ログイン時のメッセージ
ftpd_banner=Welcome to blah FTP service.
# メールアドレスの不使用(anonymous使用時はNO)
#deny_email_enable=YES
# chrootリスト有効
chroot_list_enable=YES
# chroot リストファイル指定(chrootファイルに指定しているユーザのみchrootする)
chroot_list_file=/etc/vsftpd/chroot_list
# ディレクトリごと一括での転送有効
ls_recurse_enable=YES
# IPV6モードでstandaloneモードにする(xinetdを経由しない)
# listen_ipv6=YES
# pam認証で使用するサービス名指定(vsftpdで使用するpamファイル名を指定)
pam_service_name=vsftpd
# /etc/vsftpd/user_listで指定されたユーザはログイン不可(NO:user_listに関係なく全ユーザ許可)
userlist_enable=YES
# /etc/hosts.allow・denyを使用したアクセス制限を行う
tcp_wrappers=NO
# FTPログイン時のディレクトリ指定(各ユーザのホームディレクトリ以下)
# ※同時に/etc/skel(ユーザ作成時のホームディレクトリテンプレート)に
# mkdirでpublic_htmlを追加。
local_root=public_html
# タイムスタンプ時間を日本時間(ローカルタイム)に合わせる
use_localtime=YES
# パッシブモードの利用
# (データ転送用ポートを20以外を使用。
# 使用するポートはpasv_min_port・pasv_max_portで指定。
# 制御用のLISTENポートは21。)
pasv_promiscuous=YESpasv_addr_resolve=YES
# パッシブモード時の使用ポートの指定
pasv_min_port=60000
pasv_max_port=60030
# ※↓以下、任意設定事項
#pasv_addr_resolve=YES
#pasv_address=threonine.santos55.webhop.net
#ssl_enable=YES
#rsa_cert_file=/etc/pki/tls/certs/vsftpd.pen
#force_local_logins_ssl=NO
#force_local_data_ssl=NO
[ chroot用のファイルを作成 ]
各ユーザのホームディレクトリより上層へのアクセスを許可するユーザの登録
[root@linux ~]# echo username >> /etc/vsftpd/chroot_list
[ FTPサーバーへのアクセスを禁止するユーザの登録]
上記の設定で
userlist_enable=YES
とは、/etc/vsftpd/user_listに書かれているユーザからのFTPアクセスを拒否する設定である。
デフォルトで、/etc/ftpd/user_listにはその時点でFedoraに登録されているユーザ他がリストアップされている。
これらのユーザを「#」で全てコメントアウトし、拒否したいユーザだけコメントを外すと良い。
つまり、今回はuser_list内の全ユーザをコメントアウトする。
上記の設定で
userlist_enable=YES
とは、/etc/vsftpd/user_listに書かれているユーザからのFTPアクセスを拒否する設定である。
デフォルトで、/etc/ftpd/user_listにはその時点でLinuxに登録されているユーザ他がリストアップされている。
これらのユーザを「#」で全てコメントアウトし、拒否したいユーザだけコメントを外すと良い。
つまり、今回はuser_list内の全ユーザをコメントアウトする。
また、/etc/vsftpd/ftpusersに記載されているユーザも拒否されるので注意!
[ pam認証用ファイルの設定 ]
上記の設定ではPAM認証(モジュール)を利用しているので、vsftpd専用のpamファイルの内容を変更する。
***** /etc/pam.d/vsftpd *****
#%PAM-1.0
# ↓以下3行をコメントアウト
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
[ vsftpd再起動・自動起動設定 ]
# service vsftpd restart
# chkconfig --level 345 vsftpd on
MySQL ユーザ作成
MySQLのデータベースへ接続・操作等行うにはMySQLが独自に管理するユーザアカウントでログインする必要がある。
通常、アプリケーションを作成し、そのアプリケーションからMySQLへアクセスするかたちになると思うが、その時に必要になるユーザをここでは作成する。といっても、Linuxの端末(コンソール)からmysqlコマンドでMySQLにログインしGRANT文で・・・などとする必要はない。(勿論、それでもよい。)
phpMyAdminへroot(管理者権限を持つアカウント)でログインし、TOPメニューの「権限」の項目から必要な権限を持つユーザを作成すればよい。このとき、前述のrootユーザでのログインをセキュリティ上行いたくない場合は下記のようにGRANT文で管理者権限を持つユーザを作成し、そのアカウントでphpMyAdminにログインすればよい(phpMyAdminのログイン認証設定のuser・password設定でGRANT文で作成したアカウントを指定する必要あり)。
mysql>GRANT ALL PRIVILEGES ON *.* TO user(ユーザ名) IDENTIFIED BY 'password' WITH GRANT OPTION;
通常、アプリケーションを作成し、そのアプリケーションからMySQLへアクセスするかたちになると思うが、その時に必要になるユーザをここでは作成する。といっても、Linuxの端末(コンソール)からmysqlコマンドでMySQLにログインしGRANT文で・・・などとする必要はない。(勿論、それでもよい。)
phpMyAdminへroot(管理者権限を持つアカウント)でログインし、TOPメニューの「権限」の項目から必要な権限を持つユーザを作成すればよい。このとき、前述のrootユーザでのログインをセキュリティ上行いたくない場合は下記のようにGRANT文で管理者権限を持つユーザを作成し、そのアカウントでphpMyAdminにログインすればよい(phpMyAdminのログイン認証設定のuser・password設定でGRANT文で作成したアカウントを指定する必要あり)。
mysql>GRANT ALL PRIVILEGES ON *.* TO user(ユーザ名) IDENTIFIED BY 'password' WITH GRANT OPTION;
匿名ユーザの削除(セキュリティの観点から必須)
デフォルトで匿名ユーザ(ユーザ名のないユーザ) が存在する。
セキュリティ上好ましくないので削除しておく。
mysql> select user,host,password from mysql.user;
+------+-----------------------+------------------+
| user | host | password |
+------+-----------------------+------------------+
| root | localhost | 286a9d4d7f5c728a |
| root | localhost.localdomain | 286a9d4d7f5c728a |
| | localhost.localdomain | | ← 匿名ユーザ
| | localhost | |
+------+-----------------------+------------------+
4 rows in set (0.00 sec)
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.01 sec)
セキュリティ上好ましくないので削除しておく。
mysql> select user,host,password from mysql.user;
+------+-----------------------+------------------+
| user | host | password |
+------+-----------------------+------------------+
| root | localhost | 286a9d4d7f5c728a |
| root | localhost.localdomain | 286a9d4d7f5c728a |
| | localhost.localdomain | | ← 匿名ユーザ
| | localhost | |
+------+-----------------------+------------------+
4 rows in set (0.00 sec)
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.01 sec)


