Apache digest認証を使ってみる(.htaccess)

Apacheでdigest認証かけて、アクセス時にパスワード認証をかけてみます

<環境>
さくらVPS
Centos 6

まず、httpd.conf
LoadModule auth_digest_module modules/mod_auth_digest.so
を有効に
(#をはずす)

認証かけたいフォルダの
AllowOverride に AuthConfig
をつけとく
Allになってればそれでもいいです

Apacheを再起動して
/etc/init.d/httpd restart

Digest認証に必要なパスワードファイルをつくります
htdigest -c パスワードファイル名 レルム名 ユーザー名
といれます
-c は新規作成のときにつけます

今回は
htdigest -c /var/www/.htdigestpw realm user
とするとパスワードを二回入力します
パスワードファイルできあがり

認証をかけたいフォルダに.haccessファイルをつくります
vi .htaccess
(内容)
AuthType Digest
AuthName realm
AuthUserFile /var/www/.htdigestpassword
Require user

ブラウザでアクセスして認証がでてくればできあがり

エラーになった場合は、Apacheのerror_logをみてなおしましょう

Apache+PHP+PEAR使用時にエラー非表示にする

PEARを使うと将来のバージョンで動作しなくなるコードが含まれていたりで
PHPのエラーレベル次第で、こんなエラーがでたりする

環境は、Apache2.2 + PHP 5.3 です

PHP全体のエラーレベルをさげてもいいけど
一部だけ下げたいので、.htaccessにて設定する
(.htaccessが効くようにしておく)

こう書きたいけどだめみたい

php_value error_reporting E_ALL|E_STRICT & ~E_NOTICE & ~E_DEPRECATED

エラーレベルの定数で指定してやればいいので

E_ALL(32767) – E_NOTICE(8) – E_DEPRECATED(8192) – E_STRICT(2048)= 22519

php_value error_reporting 22519

この.htaccessをフォルダにほりこめば、エラーなくなった

PHPべた書きなら、PHPファイルの一番上に

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

と書けばいいです

Apache mod_rewriteを使って階層を飛ばす

開発環境が下記になってて、そのままApache公開フォルダにつっこみたい…
てことでmod_rewriteで飛ばす

開発環境は、
WindowsXP
Apache
バージョン管理ソフトにsubversion

<subversion上のtrunc>
trunc
| – htdocs
| – sql
| – docs
etc ..

Apache公開フォルダにcheckout

<開発環境>
公開フォルダ内
maindev
| – htdocs
| – sql
| – docs
etc ..

mod_rewriteを有効にするためApache/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
をコメントアウト外す

.htaccessが使えるように公開フォルダの
AllowOverride All
に変更

.htaccessを作成
RewriteEngine On
RewriteBase /
RewriteRule maindev/$ maindev/htdocs/$1 [R=301]

ブラウザでアクセスして確認、できた

ログを残したかったらhttpd.confに

RewriteLog logs/rewrite.log
RewriteLogLevel 5

を記載

RewriteRule ^/maindev/$ maindev/htdocs/$1 [R=301]
にすると動かないのはなぜだろう。。
ちゃんとリファレンス読まないと(リファレンスややこしい)