#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("&","&amp", $tmp);
     str_replace("<","&lt", $tmp);
     str_replace(">","&gt", $tmp);
     str_replace("\"","&quot", $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;
 }
 ?>


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS