#author("2024-10-11T04:42:58+09:00","default:admin","admin") #author("2024-10-11T08:26:50+09:00","default:admin","admin") [[FrontPage]] # cat php.conf # # The following lines prevent .user.ini files from being viewed by Web clients. # <Files ".user.ini"> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order allow,deny Deny from all Satisfy All </IfModule> </Files> # # Allow php to handle Multiviews # AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # mod_php options <IfModule mod_php7.c> # # Cause the PHP interpreter to handle files with a .php extension. # <FilesMatch \.(php|phar)$> SetHandler application/x-httpd-php </FilesMatch> # # Uncomment the following lines to allow PHP to pretty-print .phps # files as PHP source code: # #<FilesMatch \.phps$> # SetHandler application/x-httpd-php-source #</FilesMatch> # # Apache specific PHP configuration options # those can be override in each configured vhost # php_value session.save_handler "files" php_value session.save_path "/var/lib/php/session" php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache" #php_value opcache.file_cache "/var/lib/php/opcache" </IfModule> # # ls -ld /var/lib/php/session /var/lib/php/wsdlcache drwxrwx--- 2 root apache 53248 4月 14 23:34 /var/lib/php/session drwxrwx--- 2 root apache 6 2月 3 17:27 /var/lib/php/wsdlcache -sitesearch.inc.php *** version 7 sitesearch.inc.php [#s2d3f246] <?php function plugin_sitesearch_convert() { global $script, $vars; // // 機能: ホームページの内容をヒント付きで検索するプラグイン。 // とほほさん(http://www.tohoho-web.com/)作 wwwsearch.cgi Ver3.15から作成 // $Id: sitesearch.inc.php,v 1.2 2006/03/14 // Copyright(C) sfuji 2005-2006 All Rights Reseved. // sfuji'URL : : http://sfuji.sakura.ne.jp // // ================================================================= // 初期化パラメータ // ================================================================= // // ★ 検索対象フォルダ(必須) // 検索対象のフォルダ名を指定してください。http://~ のようなURLを指定す // ることはできません。複数指定する場合はスペースで区切ってください。 // 右辺サンプル './../pukiwiki/wiki ./../htmldir ./../hogedirectory'; $target_dir = './../sfuji/wiki'; // ★ 検索対象ファイル // 検索対象とするファイルの拡張子を指定します。 $suffix = "htm|html|txt"; // ★ [戻る]ボタン // [戻る]のリンクをクリックされた時にジャンプする先のページを指定して // ください。http://~ ではじまるURLも指定可能です。 $return_url = './index.php'; // ★ 検索対象ファイルの漢字コード // 検索対象のファイルの漢字コードを指定してください。シフトJISの場合は "sjis"、 // EUCの場合は "euc"、JISコードや不明な場合は "unknown" を指定してください。 // sjis や euc の場合は検索が早くなります。 $kcode_file = "euc"; // ★ 検索結果ヒントの表示行数 // 検索結果に、ファイルの内容のヒントとして表示する行数を指定します。 $how_many_lines = 3; // マッチした行の前後何行を表示するか // ★ 検索キーの表示 $HitCharColor = "#ffffff"; //検索キーの文字色 $HitCharBgcolor = "#3300CC"; //検索キーの背景色 // // ★ menu欄に検索窓を置く場合は「#sitesearch」が記述されている頁を指定 // defaultでは「サイト内検索」の頁名となっています。 // menu欄に検索窓を置かない場合は使用しないので無視して下さい。 $disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7"; //検索結果を表示する頁 $menubarsize = 0; //MenuBarの横サイズが9emより小さい時は1に変更 // // ================================================================= // 本体 // ================================================================= // // 初期設定 //引数の取得 if (func_num_args() > 0) { $array = func_get_args(); $menuwindow = $array[0]; if ($array[1] == "1") $dispofmenu = 1; } //pukiwikiを設置してあるディレクトリ取得 $pukiwikidir = DATA_HOME; if (!$pukiwikidir) { list( $ScRipt, $Query ) = explode( '\?', $_SERVER['REQUEST_URI'] ); $pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/',"\$2",$ScRipt); } $hit_count = 0; // 見つかった件数 //---------------------------- // メインルーチン //---------------------------- // MENUに検索窓がある場合の処理 // HTML文書を書き出す if ($menuwindow == "menu") { $ret = '<form method="post" action="' . $script . '?cmd=read&page='.$disppage.'">'; $ret .= '<input type="text" name="WORD" size=23 value=""><br>'; $ret .= '<input type="radio" name="ANDOR" value="and" checked>AND'; $ret .= '<input type="radio" name="ANDOR" value="or">OR'; if ($menubarsize) $ret .= '<br>'; $ret .= '<input type="submit" value="検索">'; $ret .= '</form>'; if ($dispofmenu) { $ret .= '<ul>'; $ret .= '<li><small>このホームページの内容を検索します。</small>'; $ret .= '<li><small>複数の単語を入力する時は半角スペースで区切ってください。</small>'; $ret .= '</ul>'; } return $ret; } // フォームからの入力データを読み込む if ($_SERVER['REQUEST_METHOD'] == "POST"){ $word = trim($_POST["WORD"]); if (preg_match('/[\x80-\xff]/i', $word)) { $jflag = 1; // 日本語が含まれているフラグをセット } } // HTML文書を書き出す $ret = '<h3>サイト内検索</h3>'; $ret .= '<hr>'; $ret .= '<form method="post" action="' . $script . '?cmd=read&page=' . rawurlencode($vars['page']) . '">'; $ret .= '<nobr>'; $tmp = $word; str_replace("&","&", $tmp); str_replace("<","<", $tmp); str_replace(">",">", $tmp); str_replace("\"",""", $tmp); $ret .= '<input type="text" name="WORD" size=25 value="'.$tmp.'">'; if ($_POST{'ANDOR'} == "or") { $ret .= '<input type="radio" name="ANDOR" value="and">AND'; $ret .= '<input type="radio" name="ANDOR" value="or" checked>OR'; } else { $ret .= '<input type="radio" name="ANDOR" value="and" checked>AND'; $ret .= '<input type="radio" name="ANDOR" value="or">OR'; } $ret .= '<input type="submit" value="検索">'; $ret .= '</nobr>'; $ret .= '</form>'; $ret .= '<ul>'; $ret .= '<li>このホームページの内容を検索します。'; $ret .= '<li>複数の単語を入力する時は半角スペースで区切ってください。'; $ret .= '</ul>'; if ($return_url != "") { $ret .= '<a href="' . $return_url . '">[戻る]</a>'; } $ret .= '<hr>'; if ($_SERVER['REQUEST_METHOD'] == "GET") { return $ret; } if ($_POST{'WORD'}) { // メタ文字を無効化する if (!$jflag) { preg_replace('/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/','', $word); } $word = trim($_POST["WORD"]); # 検索語を分割する $words = preg_explode('/ +/', $word); # 検索する $ret .= '<dl>'; $dirs = preg_explode('/ +/', $target_dir); $TrgtDirSu = count($dirs); for ($TrgtDir=0; $TrgtDir < $TrgtDirSu; $TrgtDir++) { $files = glob("$dirs[$TrgtDir]/*"); $i=$j=0; while($i<=count($files)){ if (filetype($files[$i]) == "file"){ if(preg_match("\.($suffix)",$files[$i])){ $site[$j] =$files[$i]; $reqret = search($site[$j],$dirs[$TrgtDir],$words,$how_many_lines,$pukiwikidir,$HitCharColor,$HitCharBgcolor); if ($reqret) { $ret .= $reqret; $hit_count++; } $j++; } } $i++; } } $ret .= '</dl>'; } if ($hit_count) { $ret .= '<hr>'; $ret .= '<div>'.$hit_count.' 件みつかりました。</div>'; } else { $ret .= '<div>1件もみつかりませんでした。</div>'; } return $ret; } // //------------------------------------------------------- function search($filename, $dir,$words,$how_many_lines,$pukiwikidir,$HitCharColor,$HitCharBgcolor){ //------------------------------------------------------- // # 各種変数を初期化する $reqret = ""; $wordflag = ""; $htmltitle = ""; $match_count = 0; //検索するファイルを読み込む $RecordCount = 0; $fp = fopen($filename, "r"); while( !(feof($fp) ) ) { $buf = fgets($fp, 1024); $buf = rtrim($buf); $lines[$RecordCount] = $buf; $RecordCount++; } fclose($fp); for ($i = 0; $i <= count($lines); $i++) { $line = $lines[$i]; // タイトルを覚えておく if ((!$htmltitle) && (preg_match('<title>',$line))){ $htmltitle = $line; $htmltitle =preg_replace('/<[^>]*(>|$)/i','',$htmltitle); } if ((preg_match("\.htm",$filename)) || (preg_match("\.html",$filename))) { $line = strip_tags($line); } // //OR検索(FALSE)、AND検索(TRUE) $b_type = FALSE; if ($_POST['ANDOR'] == "and") {$b_type = TRUE;} //検索結果、最初はFALSEで検索開始 $b_match = FALSE; $matchesu = 0; foreach ($words as $word) { if (preg_match($word, $line, $regs)) { $matchesu++;} } if (($b_type) && ($matchesu== count($words))) { $b_match = TRUE;} if ((!$b_type) && ($matchesu)) { $b_match = TRUE;} //検索でヒットしました。 if (($b_match) && ($wordflag != "1")) { // 見つかったことを覚えておく $wordflag = 1; // # 表示する $authflag= TRUE; //v1.1 defaultでは閲覧OK $UrlFileName = $wtarget = $filename; $UrlFileName = str_replace($dir."/","", $UrlFileName); if (preg_match('/wiki/',$filename)) { $UrlFileName = str_replace(".txt","", $UrlFileName); $UrlFileName = preg_match('/^[0-9a-f]+$/i', $UrlFileName) ? pack('H*', (string)$UrlFileName) : $UrlFileName; $wtarget = '"./../' . $pukiwikidir . '/?'.$UrlFileName.'"'; $authflag= check_readable($UrlFileName, false, false); //v1.1 閲覧制限のチェック } if ($authflag) { //v1.1 閲覧OK頁のみを表示 $reqret .= '<dt>■ <a href='.$wtarget.' target=out>'; if (!$htmltitle) {$reqret .= $UrlFileName.'</a>';} else {$reqret .= $htmltitle.'</a>';} $reqret .= '</dt>'; $reqret .= '<dd>'; $imin = $i - $how_many_lines; if ($imin < 0) { $imin = 0; } $imax = $imin + $how_many_lines; if ($imax > count($lines)) { $imax = count($lines); } for ($j = $imin; $j <= $imax; $j++) { $line = $lines[$j]; $line = preg_replace('/<[^>]*(>|$)/','', $line); $tmp = $word; if ($jflag) { $tmp = preg_replace('/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/','/\\$1/', $tmp); } foreach ($words as $w) { $w2 = '/'.$w.'/i'; $line = preg_replace($w2,'<font color="' . $HitCharColor . '"><span style="background-color: '.$HitCharBgcolor.'" ><b>'.$w.'</b></span></font>', $line); //v1.1 反転文字を採用 } if (preg_match('/\/wiki\//i',$filename)) { $line = pukiwikiformat($line); } // $reqret .= $line; $reqret .= '</dd>'; } } //v1.1 閲覧制限外頁の表示終了 } //検索でのヒット処理終了 } return $reqret; } // function pukiwikiformat($line){ $line = preg_replace('/^ +/','', $line); $line = preg_replace('/^-+/','', $line); $line = preg_replace('/^\*+/','', $line); $line = preg_replace('/\[#.*\]/','', $line); $line = str_replace("~","", $line); $line = str_replace("[[","", $line); $line = str_replace("]]","", $line); $line = str_replace("|","|", $line); $line = str_replace("&br;","", $line); return $line; } //履歴 // v1.0 新規レリース 2005.12.27 // v1.1 閲覧・編集制限の頁を検索対象外にしました。 2006.01.02 // v1.1 検索文字を反転文字にしました。 2006.01.02 // v1.2 MENUに検索窓を設置した場合の処理を追記 ?> *** Version 8 [#lb02839f] <?php function plugin_sitesearch_convert() { global $script, $vars; // // 検索対象フォルダ(必須) $target_dir = './../sfuji/wiki'; $suffix = "htm|html|txt"; $return_url = './index.php'; $kcode_file = "euc"; $how_many_lines = 3; $HitCharColor = "#ffffff"; $HitCharBgcolor = "#3300CC"; $disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7"; $menubarsize = 0; // 初期設定 if (func_num_args() > 0) { $array = func_get_args(); $menuwindow = $array[0]; if ($array[1] == "1") $dispofmenu = 1; } $pukiwikidir = DATA_HOME; if (!$pukiwikidir) { list($ScRipt, $Query) = explode('?', $_SERVER['REQUEST_URI']); $pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/', "$2", $ScRipt); } $hit_count = 0; // メインルーチン if ($menuwindow == "menu") { $ret = '<form method="post" action="' . $script . '?cmd=read&page=' . $disppage . '">'; $ret .= '<input type="text" name="WORD" size=23 value=""><br>'; $ret .= '<input type="radio" name="ANDOR" value="and" checked>AND'; $ret .= '<input type="radio" name="ANDOR" value="or">OR'; if ($menubarsize) $ret .= '<br>'; $ret .= '<input type="submit" value="検索">'; $ret .= '</form>'; if ($dispofmenu) { $ret .= '<ul>'; $ret .= '<li><small>このホームページの内容を検索します。</small>'; $ret .= '<li><small>複数の単語を入力する時は半角スペースで区切ってください。</small>'; $ret .= '</ul>'; } return $ret; } if ($_SERVER['REQUEST_METHOD'] == "POST") { $word = trim($_POST["WORD"]); if (preg_match('/[\x80-\xff]/i', $word)) { $jflag = 1; // 日本語が含まれているフラグをセット } } $ret = '<h3>サイト内検索</h3>'; $ret .= '<hr>'; $ret .= '<form method="post" action="' . $script . '?cmd=read&page=' . rawurlencode($vars['page']) . '">'; $ret .= '<nobr>'; $tmp = htmlspecialchars($word, ENT_QUOTES, 'UTF-8'); $ret .= '<input type="text" name="WORD" size=25 value="' . $tmp . '">'; if ($_POST['ANDOR'] == "or") { $ret .= '<input type="radio" name="ANDOR" value="and">AND'; $ret .= '<input type="radio" name="ANDOR" value="or" checked>OR'; } else { $ret .= '<input type="radio" name="ANDOR" value="and" checked>AND'; $ret .= '<input type="radio" name="ANDOR" value="or">OR'; } $ret .= '<input type="submit" value="検索">'; $ret .= '</nobr>'; $ret .= '</form>'; $ret .= '<ul>'; $ret .= '<li>このホームページの内容を検索します。'; $ret .= '<li>複数の単語を入力する時は半角スペースで区切ってください。'; $ret .= '</ul>'; if ($return_url != "") { $ret .= '<a href="' . $return_url . '">[戻る]</a>'; } $ret .= '<hr>'; if ($_SERVER['REQUEST_METHOD'] == "GET") { return $ret; } if ($_POST['WORD']) { if (!$jflag) { $word = preg_replace('/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/', '', $word); } $word = trim($_POST["WORD"]); $words = preg_split('/ +/', $word); $ret .= '<dl>'; $dirs = preg_split('/ +/', $target_dir); foreach ($dirs as $dir) { $files = glob("$dir/*"); foreach ($files as $file) { if (is_file($file) && preg_match("/\.($suffix)/i", $file)) { $reqret = search($file, $dir, $words, $how_many_lines, $pukiwikidir, $HitCharColor, $HitCharBgcolor); if ($reqret) { $ret .= $reqret; $hit_count++; } } } } $ret .= '</dl>'; } if ($hit_count) { $ret .= '<hr>'; $ret .= '<div>' . $hit_count . ' 件みつかりました。</div>'; } else { $ret .= '<div>1件もみつかりませんでした。</div>'; } return $ret; } function search($filename, $dir, $words, $how_many_lines, $pukiwikidir, $HitCharColor, $HitCharBgcolor) { $reqret = ""; $wordflag = ""; $htmltitle = ""; $lines = file($filename, FILE_IGNORE_NEW_LINES); $RecordCount = count($lines); foreach ($lines as $i => $line) { if (!$htmltitle && preg_match('/<title>/i', $line)) { $htmltitle = strip_tags($line); } if (preg_match("/\.htm|\.html/i", $filename)) { $line = strip_tags($line); } $b_type = ($_POST['ANDOR'] == "and"); $b_match = false; $matchesu = 0; foreach ($words as $word) { if (preg_match("/$word/i", $line)) { $matchesu++; } } if (($b_type && $matchesu == count($words)) || (!$b_type && $matchesu > 0)) { $b_match = true; } if ($b_match && !$wordflag) { $wordflag = 1; $UrlFileName = str_replace($dir . "/", "", $filename); if (preg_match('/\/wiki\//', $filename)) { $UrlFileName = str_replace(".txt", "", $UrlFileName); $UrlFileName = preg_match('/^[0-9a-f]+$/i', $UrlFileName) ? pack('H*', $UrlFileName) : $UrlFileName; $wtarget = '"./../' . $pukiwikidir . '/?' . $UrlFileName . '"'; } else { $wtarget = $filename; } $reqret .= '<dt>■ <a href=' . $wtarget . ' target=out>'; $reqret .= $htmltitle ? $htmltitle : $UrlFileName; $reqret .= '</a></dt>'; $reqret .= '<dd>'; $imin = max(0, $i - $how_many_lines); $imax = min($RecordCount - 1, $imin + $how_many_lines); for ($j = $imin; $j <= $imax; $j++) { $line = strip_tags($lines[$j]); foreach ($words as $w) { $line = preg_replace("/$w/i", '<font color="' . $HitCharColor . '"><span style="background-color: ' . $HitCharBgcolor . '"><b>' . $w . '</b></span></font>', $line); } $reqret .= $line; } $reqret .= '</dd>'; } } return $reqret; } ?>