Posts tagged .htaccess
[CakePHP] さくらのレンタルサーバで CakePHP1.2.6 が動かない
1CakePHP 1.2.6 をさくらのレンタルサーバに設置したところ、Internal Server Error になってしまった。トップページは表示されるが、コントローラを指定すると Internal Server Error になってしまう。エラーログを見ると、
mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.
と出ている。ちなみにドキュメントルートは app/webroot にしていました。
(続きを読む…)
Mac で不可視ファイルを表示する方法
1Mac で .htaccess などを Finder で見ようとしてもファイルが表示されません。ドットで始めるファイル名は不可視ファイルなので表示されなくなっています。ターミナルなどで ls -a などすれば見えるのですが、Finder で表示されないのは、何かと不便なので表示する方法を調べたのでメモです。
(続きを読む…)
.htaccess で error_reporting を設定するときの注意点
5.htaccess で PHP が出力するエラー表示を制御するには E_ALL などの定数は使えないので、ビット値で指定する必要があります。
E_ALL & ~E_NOTICE を設定する場合
php.ini
error_reporting = E_ALL & ~E_NOTICE
php コード内
error_reporting(E_ALL ^ E_NOTICE);
.htaccess
php_value error_reporting 6135
error_reporting に設定する値は PHP: error_reporting – Manual を参照するといいでしょう。
値 | 定数 |
---|---|
1 | E_ERROR |
2 | E_WARNING |
4 | E_PARSE |
8 | E_NOTICE |
16 | E_CORE_ERROR |
32 | E_CORE_WARNING |
64 | E_COMPILE_ERROR |
128 | E_COMPILE_WARNING |
256 | E_USER_ERROR |
512 | E_USER_WARNING |
1024 | E_USER_NOTICE |
6143 | E_ALL |
2048 | E_STRICT |
4096 | E_RECOVERABLE_ERROR |
ちなみに E_ALL & ~E_NOTICE の値が 6135 になる理由は E_ALL の値が 6143、E_NOTICE の値が 8 なので 6143-8=6135 になります。(または E_NOTICE と E_STRICT 以外の値を足した数が 6135 になります。
私は開発中は E_NOTICE も表示するようにしていますが、結構表示させない人が多いようで人のコードを修正するときなど Notice エラーが出て困ることがあります。E_NOTICE を表示するようにしておくと未定義の変数などバグの元になりやすいものを教えてくれるのでお勧めです。
また、開発終了して本番運用するときにはブラウザにエラーを出力しないように
error_reporting(0);
を設定しておくことを忘れずに!
その際も PHP のエラーはエラーログに記録されるようにしておかないのも忘れずに。
OpenPNE 管理画面を別ディレクトリにする
1OpenPNE の管理画面の URL は
http://www.example.com/?m=admin
という URL になります。
これは SNS の URL
http://www.example.com/?m=pc
などと同じ index.php を使用しています。
このため、管理画面だけ IP アドレス制限をしたいなどという場合に、.htaccess などで制限ができません。
OpenPNE のセットアップマニュアルには 「6-3. 管理画面を別ドメインで運用する (オプション)」という内容で別ドメインで運用する方法が紹介されています。
しかし、レンタルサーバなどでバーチャルドメインなどが使用できない場合に管理画面を別ディレクトリにして .htaccess などでIPアドレス制限や Basic 認証をかけられるようにする方法です。
- OPENPNE_DIR ├ bin ├ lib ├ var ├ webapp ├ webapp_ext ├ webapp_biz └ config.php - public_html ├ config.inc.php ├ index.php
の public_html 以下のファイルを public_html/admin ディレクトリ以下にコピーする
-public_html ├ admin (管理画面のディレクトリ名) ├ config.inc.php ├ index.php ・ ・ ・
コピーした public_html/admin/config.inc.php を書き換える
< ?php /** * @copyright 2005-2007 OpenPNE Project * @license http://www.php.net/license/3_01.txt PHP License 3.01 */ define('OPENPNE_DIR', realpath('../../')); // ディレクトリ階層が違うので合わせるために変更する require_once OPENPNE_DIR . '/config.php'; // 管理画面のベースURL設定 define('OPENPNE_ADMIN_URL', 'http://www.exmaple.com/admin/'); // 無効にするモジュール $GLOBALS['_OPENPNE_DISABLE_MODULES'] = array('pc', 'ktai'); ?>
これで、htt://www.exmple.com/admin/?m=admin でアクセスできるようになります。
注意点は ?m=admin をつけないとアクセスできません。
また、元の http://www.example.com/?m=admin でアクセスできないように
// 無効にするモジュール $GLOBALS['_OPENPNE_DISABLE_MODULES'] = array('admin', 'setup');
を public_html/config.inc.php に追加してください。
また、前回のエントリで紹介した 「特定ページを SSL で接続する」 で管理画面を SSL で接続する設定をしている場合は
// 管理画面のベースURL設定 define('OPENPNE_ADMIN_URL', 'https://www.exmaple.com/admin/');
のように URL も忘れずに https にしておかないとアクセスできなくなります。