.htaccessにPHPの設定を記述
.htaccessにPHPの設定を記述する方法。
一般ユーザによるApacheの設定変更
Apacheの設定ファイルは /etc/httpd/conf/httpd.conf や /etc/httpd/conf.d/ 以下のconfファイル。 これは、rootユーザのみが編集できるファイルのため、一般ユーザは、Apacheの設定変更はできない。
ただし、一般ユーザに .htaccess の利用が許可されていれば、許可された項目の設定変更が行える。
ちなみに、.htaccess による設定の上書きを許可するかどうかの設定は、 /etc/httpd/conf/httpd.confなどにて、「AllowOverride」ディレクティブで行う。 値は、以下。
値 | 意味 |
---|---|
ALL | すべての項目を許可。(デフォルト) |
None | すべてを禁止。 |
AuthConfig | 認証に関するディレクティブの使用を許可。 |
FileInfo | ドキュメントタイプを制御するディレクティブ、ドキュメントのメタデータを制御するディレクティブ、mod_rewrite のディレクティブ、mod_actions の Action ディレクティブの使用を許可。 |
Indexes | ディレクトリインデックスを制御するためのディレクティブの使用を許可。 |
Limit | ホストへのアクセス制御を行うためのディレクティブの使用を許可。 |
Options[=opt1,opt2,...] | 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可。 |
CentOS 5.2のApacheでは、/etc/httpd/conf/httpd.confにて、一般ユーザのWeb公開に関する設定がコメントアウトで、次のように記述されている。
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
さらに、利用するファイル名が「.htaccess」かどうかは、「AccessFileName」ディレクティブで設定。 デフォルトは、当然「.htaccess」。
一般ユーザによるPHPの設定変更
さて、前置きが長くなったが、.htaccessにPHPの設定を記述する方法。 bool値(On/Off値)の場合と、それ以外の値とで利用するディレクティブが異なる。
ディレクティブ | 書式 |
---|---|
php_flag | php_flag PHP設定項目 値(OnかOffか) |
php_value | php_value PHP設定項目 値 |
このとき、ApacheのAllowOverrideディレクティブに必要な上書き許可は、PHPマニュアルによると、最低「Options」だそうだ。
また、.htaccess内にて 、変更可能なPHP設定項目は、php.ini ディレクティブのリストの「変更の可否」が「PHP_INI_PERDIR」か「PHP_INI_ALL」である項目に限られる。
たとえば、次の通り。
php_value include_path ".:/home/user01/includes"
php_flag display_errors Off
なお、PHPマニュアルに警告として、「Apache側でPHP定数は認識できない」みたいな記述がある。たとえば、.htaccess内でerror_reporting項目に「E_ALL」や「E_NOTICE」などの定数での設定はできない。このような場合は、代わりに定義済み定数の値(E_ALLなら「30719」、E_NOTICEなら「8」)を利用する。ただ、バージョンによって値が変わるようだ(特にE_ALLはコロコロ変わってるみたい)。
外部リンク:
- 設定を変更するには - php.net内 PHPマニュアル
- php.ini ディレクティブのリスト - php.net内 PHPマニュアル
- 定義済み定数 - php.net内 PHPマニュアル
- AllowOverride ディレクティブ - apache.org内 Apache HTTP 2.2 ドキュメント
- AccessFileName ディレクティブ - apache.org内 Apache HTTP 2.2 ドキュメント
« ファイナルファンタジー | トップページ | Solarisのランレベル »
「パソコン・インターネット」カテゴリの記事
- モッピー(moppy)に登録したので広告(2013.10.12)
- VMware PlayerのBIOS画面表示(2012.12.10)
- ウイルスバスターのポップアップ広告を消す(2012.06.25)
「Linux」カテゴリの記事
- [Linux] ログイン画面のOS名表示など(2013.08.12)
- CentOSからWin7の共有フォルダへアクセス(2011.11.27)
- namazuのインストール手順(2011.09.02)
- mknmzで、エラー 'sh: line 1: no: command not found'(2011.08.30)
- PostgreSQL 8.1から7.3へデータ移行(2011.08.24)