質問箱/4305

カテゴリ
サマリBBCloneでアクセス解析
バージョンPukiWiki1.4.7
投稿者うま
状態完了
投稿日2008-05-11 (日) 04:33:53

質問

BBCloneからダウンロードしたBBClone 0.4.9cをpukiwikiにはめこんで、アクセス解析を試みています。導入方法はこちらを参考にしました。
おおむね、成功しているのですが、私のpukiwikiサイトは質問箱/3053のような編集用ページhoge.phpを入れており、BBCloneがどういうわけか、閲覧専用のindex.phpではなく、編集用のhoge.phpのアクセス解析しかしていないという状況です。
どうすれば、閲覧専用のindex.phpを解析対象とすることができるのでしょうか?

回答

  • PHP_SELFを見て、hoge.phpの場合だけ解析コードが有効になるようにするとか。 -- 2008-05-11 (日) 11:08:35
    • ご回答ありがいとうございます。PHP_SELFを見るとはどういうことでしょう? -- うま 2008-05-11 (日) 11:25:31
  • $_SERVERの内容から判断して、hoge.phpの場合は解析用コードを出さないようにするか、index.phpの場合だけ出すようにするかのどっちかです。REQUEST_URIの方が良いのかもしれません。条件文で挟むだけです。PHPの文法とかについて一々書くのはこのサイトの本旨と違うと思いますので、ここまでです。後は自分で調べるなり、他の方にお願いするなりしてください。 -- 2008-05-11 (日) 11:40:07
  • ↑の回答が理解できないので、どなたか分かる方、解説いただけませんか? まず、どのファイルに対して作業をすればいいのでしょうか? BBCloneのファイル? 編集用ページのファイル? -- うま 2008-05-11 (日) 12:15:22
  • うまさんの環境が分からないので推測ですが、bbcloneのvar/内はhttpd 実行ユーザーが書き込み可能なパーミッションになってますよネ ?*1 -- hirokasa 2008-05-11 (日) 17:53:05
    • hirokasaさん、ありがとうございます。var/内は.htaccessを644、他を606に設定しています。varフォルダそのものは、あるサイトで777に設定するようにとあったので、その通りにしています。 -- うま 2008-05-12 (月) 01:22:04
  • 家のdebian test環境でBBClone 0.4.9cをセットアップしてみましたが特に問題はなかったですねぇ。但し、var/内の*.incと*.phpは666にしましたが。 -- hirokasa 2008-05-12 (月) 22:03:42

pukiwiki.ini.phpは

if (! defined('PKWK_READONLY'))
	define('PKWK_READONLY', 1); // 0 or 1
if (! defined('PKWK_SAFE_MODE'))
	define('PKWK_SAFE_MODE', 1);

index.phpはデフォルト
hoge.phpは

<?php
// PukiWiki - Yet another WikiWikiWeb clone.
// $Id: hoge.php,v 1.00 2008/05/12 22:00:00 hoge Exp $
// Copyright (C) 2004-2005 PukiWiki Developers Team
// License: GPL v2 or (at your option) any later version

/////////////////////////////////////////////////
define('PKWK_SAFE_MODE', 0);
define('PKWK_READONLY', 0);
/////////////////////////////////////////////////
// Error reporting

// error_reporting(0): // Nothing
error_reporting(E_ERROR | E_PARSE); // Avoid E_WARNING, E_NOTICE, etc
// error_reporting(E_ALL);

/////////////////////////////////////////////////
// Directory definition
// (Ended with a slash like '../path/to/pkwk/', or '')
define('DATA_HOME',	'');
define('LIB_DIR',	'lib/');

/////////////////////////////////////////////////
require(LIB_DIR . 'pukiwiki.php');
?>

pukiwiki.phpは
L30あたり

$useragent
 = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
if (! defined('DATA_HOME')) define('DATA_HOME', '');

最後

// Output
catbody($title, $page, $body);
$ua = 'HTTP_USER_AGENT';
${$ua} = $useragent;
$_SERVER[$ua] = $useragent;
$HTTP_SERVER_VARS[$ua] = $useragent;
$ua = $useragent;
define("_BBC_PAGE_NAME", $page);
define("_BBCLONE_DIR", "../../bbclone/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
exit;
?>

bbcloneのconfig.phpは

$BBC_MAINSITE = "http://test.com/pukiwiki/";
  • hirokasaさん、ご丁寧にありがとうございます。しかし、hirokasaさんのスクリプトと私のスクリプトの間に「ほぼ」違いは見られず、原因が分からないままです。どうして、/hoge/下でのみ解析してしまうのか…。「ほぼ違いがない」というのは、hirokasaさんのスクリプトでは、pukiwiki.phpの末尾で
     define("_BBCLONE_DIR", "../../bbclone/");
    となっており、私のはここにあるとおり、
     define("_BBCLONE_DIR", "../bbclone/");
    です。フォルダ構造が違うのでしょうか? 私のフォルダ構造は下のとおりなのですが、特に問題はないですよね? hoge.phpはBASIC認証をかけるために、index.phpと同じディレクトリ下ではなく、/hogeディレクトリ下に置いています。-- うま 2008-05-14 (水) 23:20:50
 +-index.php
 +-pukiwiki.ini.php
 +-/lib
    +-pukiwiki.php
 +-/hoge
    +-hoge.php
 +-/bbclone
    +-conf
    +-doc
    +-images
    +-language
    +-lib
  • define("_BBCLONE_DIR", "../bbclone/");はindex.phpから見た/bbclone/への相対パスですので各人で違いますよね。
    私はindex.phpとhoge.phpを同じディレクトリに置いています。
    そんで、apacheの方で<Files "hoge.php">~</Files>でBASIC認証をすれば良いですね。
    この利点は複数のPukiWikiを設置した場合、全てのhoge.phpがBASIC認証の対象になりますので、簡単だと考えました。 -- hirokasa 2008-05-15 (木) 08:53:39
    • ということは、私のディレクトリ構造の場合であれば、私の define("_BBCLONE_DIR", "../../bbclone/");も正しいはずですよね。/hoge/ディレクトリ下にのみ反応してしまう原因、何が考えられそうでしょうか? -- うま 2008-05-16 (金) 22:03:13
  • _BBCLONE_DIRがindex.phpからの相対パスに設定されてなくhoge.phpからのパスになっているのが原因と言いたかったのですが。。。 -- hirokasa 2008-05-16 (金) 22:19:30
    • うまさんのディレクトリ構造ではindex.phpからのアクセスをアクセス解析する場合、
      define("_BBCLONE_DIR", "./bbclone/");或いはdefine("_BBCLONE_DIR", "bbclone/");となり、
      hoge.phpからのアクセスをアクセス解析する場合、define("_BBCLONE_DIR", "../bbclone/");となりますよね。 -- hirokasa 2008-05-16 (金) 22:26:22
    • だから・・・と言うか私の考えではどちらのアクセス解析も欲しいと思い、index.phpとhoge.phpを同じディレクトリに置き、
      <Files "hoge.php">~</Files>でBASIC認証をすれば良いと↑に書いたつもりです。 -- hirokasa 2008-05-16 (金) 22:32:06
  • ご指摘のとおり、bbcloneへのパス表記が誤っていて、これを直すと解決しました。ありがとうございました。 -- うま 2008-05-18 (日) 23:32:12
    • 宜しければ状態を質問から完了にしておいて下さい。 -- hirokasa 2008-05-18 (日) 23:50:57


*1 .htaccess以外のファイルです

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-07 (日) 11:05:26
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.249 sec.

OSDN