mint apache2 cgi 設定

見落としがちなCGIを有効にする設定

設定ファイルに絶対間違いはないのにCGIプログラムが動かず、そのソースが表示されるときにはどうしたら良いんだろう?

その場合は、ApacheにCGIを実行するモジュールが組み込まれているか確認します。

$ sudo apache2ctl -M|grep cgi
cgi_module (shared)
このコマンドでcgi_moduleが表示されない時には、ApacheにCGIモジュールが組み込まれていません。

UbuntuのApacheパッケージでCGIモジュールを読みこませるには、/etc/apache2/mods-available/cgi.loadをmods-enabledにコピーまたはリンクを作成します。

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/cgi.load .
$ ls -l | grep cgi
lrwxrwxrwx 1 root root 26 11月 3 11:58 cgi.load -> ../mods-available/cgi.load
これでApacheを再起動するとCGIプログラムが動くようになるはずです。

configはこんな感じ

<Directory /home/hashimoto/www/>
#	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
	
	Order allow,deny
	allow from all
	Options +ExecCGI
	AddHandler cgi-script .cgi
</Directory>

MT5 特定のカテゴリ一覧を表示する

指定したカテゴリと、その下の階層のカテゴリが表示されます。

<ul>
<h3>カテゴリ名</h3>
<MTSubCategories category="カテゴリ名" sort_order="ascend">
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
</li>
</MTSubCategories>
</ul>

MT の変数を PHP で扱う

MTに用意されていない機能を実装する場合、
現在の記事ID(エントリーID、EntryID)を取得すれば、あとはBDに接続し思いのままに操れる。

ではどうやって記事IDを頂くか? とても簡単だ!

$hoge = "&lt;$MTEntryID$&gt;";
echo $hoge;

MT変数をダブルクォーテーションで括るとだめなとき、シングルクォーテーションでいける場合もある。

<?php
    $hoge = '<$mt:EntryBody$>';
    echo $hoge;
?>

MTへのDB接続


// MT設定読み込み
$line = '';
$line = file("../app/mt/mt-config.cgi");
$i = 0;
while($line[$i]!=""){
	// マッチしたら変数化
	if (preg_match("/Database/",$line[$i])) {
		$DB_NAME = explode(' ', $line[$i]);
		$DB_NAME = trim($DB_NAME[1]);
	}
	if (preg_match("/DBUser/",$line[$i])) {
		$DB_USER = explode(' ', $line[$i]);
		$DB_USER = trim($DB_USER[1]);
	}
	if (preg_match("/DBPassword/",$line[$i])) {
		$DB_PASSWORD = explode(' ', $line[$i]);
		$DB_PASSWORD = trim($DB_PASSWORD[1]);
	}
	if (preg_match("/DBHost/",$line[$i])) {
		$DB_SERVER = explode(' ', $line[$i]);
		$DB_SERVER = trim($DB_SERVER[1]);
	}
	$i ++;
}
 //------------------------------------------------------
// MT_DBに接続開始
	$db = mysql_connect($DB_SERVER,$DB_USER,$DB_PASSWORD);
	mysql_query("SET NAMES utf8");
	// DB指定(確認用)
	if(!mysql_select_db($DB_NAME, $db)){
		 echo "&lt;div style=\"color:red;\"&gt;\nメインデータベースに接続できません。&lt;/div&gt;\n";
	}elseif(mysql_select_db($DB_NAME, $db)){
		 // echo "&lt;div style=\"color:green;\"&gt;\nDB指定OK!(".$DB_NAME.")&lt;/div&gt;\n\n\n";
	}
 // EOF/MT_DBに接続開始
//------------------------------------------------------

MTサイトマップ

  &lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" style="color:red; width:1000px;display:block;"&gt;
  &lt;url&gt;
  &lt;loc&gt;&lt;$MTBlogURL encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;lastmod&gt;&lt;$MTDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;changefreq&gt;daily&lt;/changefreq&gt;
  &lt;/url&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Individual"&gt; 
  &lt;MTEntries lastn="9999"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTEntryPermalink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;priority&gt;1.0&lt;/priority&gt;

  &lt;/url&gt;
  &lt;/MTEntries&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Monthly"&gt; 
  &lt;MTArchiveList archive_type="Monthly"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Weekly"&gt; 
  &lt;MTArchiveList archive_type="Weekly"&gt;

  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;

  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;

  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Daily"&gt; 
  &lt;MTArchiveList archive_type="Daily"&gt;
  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;

  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;

  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Author"&gt; 
  &lt;MTArchiveList archive_type="Author"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Author-Daily"&gt; 
  &lt;MTArchiveList archive_type="Author-Daily"&gt;

  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;

  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;

  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Author-Weekly"&gt; 
  &lt;MTArchiveList archive_type="Author-Weekly"&gt;
  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;

  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;

  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Author-Monthly"&gt; 
  &lt;MTArchiveList archive_type="Author-Monthly"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;
MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Author-Yearly"&gt; 
  &lt;MTArchiveList archive_type="Author-Yearly"&gt;

  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;

  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;

  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Category"&gt; 
  &lt;MTArchiveList archive_type="Category"&gt;
  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;

  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;

  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Category-Daily"&gt; 
  &lt;MTArchiveList archive_type="Category-Daily"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Category-Weekly"&gt; 
  &lt;MTArchiveList archive_type="Category-Weekly"&gt;

  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;

  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;

  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Category-Monthly"&gt; 
  &lt;MTArchiveList archive_type="Category-Monthly"&gt;
  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;

  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;

  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Category-Yearly"&gt; 
  &lt;MTArchiveList archive_type="Category-Yearly"&gt;
  &lt;url&gt;

  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;
  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;

  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;
  &lt;/MTIfArchiveTypeEnabled&gt;
  
  &lt;MTIfArchiveTypeEnabled archive_type="Page"&gt; 
  &lt;MTArchiveList archive_type="Page"&gt;

  &lt;url&gt;
  &lt;loc&gt;&lt;$MTArchiveLink encode_xml="1"$&gt;&lt;/loc&gt;
  &lt;MTEntries lastn="1" sort_by="modified_on"&gt;

  &lt;lastmod&gt;&lt;$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$&gt;&lt;$MTBlogTimezone$&gt;&lt;/lastmod&gt;
  &lt;/MTEntries&gt;
  &lt;/url&gt;
  &lt;/MTArchiveList&gt;

  &lt;/MTIfArchiveTypeEnabled&gt;
  
&lt;/urlset&gt;