2010/06/09: SSIの使い方

カテゴリ: HTML
投稿者: mio
XREA、CORESERVER、hetemlなど、SSIが使えると書いてあるサーバは数多ありますが、使えるようにする方法が載っていないことが多いので書いておきます。

SSIを使えるようにするには、

以下のように書かれた、.htaccess ファイルを、
置けばその階層以下のフォルダで使えるようになります。
AddType text/x-server-parsed-html .shtml .html


html内で、SSIを使ってファイルを読み込むときは、
以下のように書きます。
相対パス : <!--#include file = "hoge/header.shtml"--><br />
絶対パス : <!--#include virtual = "/ssi/header.shtml"--><br />
※ 絶対パスの基準は、Webサーバーのドキュメントルート<br />
カテゴリ: general
投稿者: terada
XREAでCRONをつかってPHPを自動実行させてみたメモです。

XREAのコントロールパネルの「CRONジョブ」で設定できます。
説明には「 ジョブの間隔は最短で1時間に1回とさせて頂いております。」とありますが、ジョブを複数設定可能なので、例えば
分	時	日	月	曜日
0 * * * *
5 * * * *
10 * * * *
15 * * * *
20 * * * *
25 * * * *
30 * * * *
35 * * * *
40 * * * *
45 * * * *
50 * * * *
55 * * * *
として、同じスクリプトを実行するようにしておけば、5分おきに自動実行することもできました。

実行スクリプト
実行対象となるシェルスクリプトで書く必要があるので、PHPなどを実行したい場合は、下記のようにファイルを作成し「○○.sh」で保存します。
この時、文字コードは「SHIFT-JIS」改行コードは「LF」にします(シェルスクリプトはDreamweaverで直接開けないかもしれないのでTeraPadなどのエディタを使いましょう)。
このファイルをサーバーへアップロードしてそのパスをコントロールパネルで指定し、「保存」をします。反映まで1時間程度かかると書いてますが、僕の環境では数分という印象でした。(追記:時間帯により結構差があるようです)
#!/bin/sh
/usr/local/bin/php /virtual/ユーザ名/public_html/test.php
exit
※1行目は「#」で始まってるけどコメント行ではないので必須
※赤字部分が実行したいPHPファイルへの絶対パスです。赤字部分手前には半角スペースが必要です。

実行PHP
基本的な使い方ですが、例えば上記のシェルスクリプトで指定したtest.phpを
<?php
echo "test !";
?>
としておくと、echoの部分が管理者へメールで送られます。エラーが発生した場合にもメールでエラー内容が送られてきます。(※通知メールの設定については後述)
権限は、とりあえず700にしておけば動作しました。(所有者が実行可能になってればOK?)

ファイルのインクルード
注意点は、PHPでファイルをインクルードしている場合です。
相対パスや、この前の記事でやっているように.htaccessを用いたやり方だとパスは通らないので、実行スクリプトでも下記のようにパスを指定します。
#!/bin/sh
/usr/local/bin/php -d include_path='.:/usr/local/lib/php:/virtual/ユーザ名/public_html/pear/php' /virtual/ユーザ名/public_html/test.php
exit


通知メール
最後に、通知メールについて。(参考サイト
実行スクリプトの指定に続けてオプションを指定することで、通知メールの設定ができます。
上記のように「・・・text.php」の後に何も書かないと1)になります。
1)エラーの有無にかかわらず、通知メールを出す:test.php
2)エラーの有無にかかわらず、通知メールを出さない:test.php >/dev/null 2>&
3)エラーがあった場合にのみ、通知メールを出す:test.php >/dev/null

3)にしたい場合は、実行スクリプトは下記のようになります。
#!/bin/sh
/usr/local/bin/php -d include_path='.:/usr/local/lib/php:/virtual/ユーザ名/public_html/pear/php' /virtual/ユーザ名/public_html/test.php >/dev/null
exit
カテゴリ: PHP
投稿者: terada
表題のように、CORESERVER(もしくはXREA)でPEARのOAuthライブラリを使えるようにするまでの手順をメモしておきます。

1)CORESERVERの管理画面で ホスト情報登録>SSH登録
2)PuTTYなどでホスト名を入力してSSH接続
3)コマンドラインでログイン名とパスワードを入力してログイン
4)public_html直下にPEARをインストール(情報元
pear config-create /virtual/自分のユーザ名/public_html .pearrc

pear install -o PEAR

5)必要なPEARパッケージをインストールしてパスを通す(情報元
pear install Net_URL2-0.3.0

pear install HTTP_Request2-0.5.1

pear install HTTP_OAuth-0.1.6

PEARを使うディレクトリに以下のように記述した.htaccessを置いておくことで、いちいち相対パスで辿らなくて良くなる。
php_value include_path ".:/usr/local/lib/php:/virtual/自分のユーザ名/public_html/pear/php"

※赤字の部分はphpinfo();で「include_path」を確認しそれと合わせればよい
カテゴリ: MODx
投稿者: terada
modx管理画面上でスニペットなどを編集する際に、デフォルトだとインデントつけられなかったり不便なので、エディタソフトにコピペして編集していました。ちょっとした修正など多いと、この手間が非常に厄介だったのですが、素晴らしいプラグインを見つけました。

EditArea

複数行選択してのインデント上げ下げができるだけでも、ありがたいのにシンタックスカラーまで付いてるなんて!
思わず紹介したくなりました。
カテゴリ: MODx
投稿者: terada
modxのスニペットDittoで、出力をフィルタリングしたい時に一番簡単なのはfilterで出力対象以外をフィルタリングで予め排除する方法があります。ただし、この方法では対象となる変数によってうまくいかないことがあります。

例えば、テンプレート変数「tv_name」の値が「hoge」のものだけ出力したいとします。
下のようにfilterを使って記述した場合、tv_nameの値が「hoge_fuge」や「fuge_hoge」など、「hoge」の付くものは全て出力されてしまいます。つまり、filterを使う限り完全一致ができないということです。

[[Ditto? &filter=`tv_name,hoge,7`]]

出力を完全一致でフィルタリングさせたいときは、下記のようにtaggingを使うとうまくいきます。

[[Ditto? &extenders=`tagging` &tagData=`tv_name` &tagDelimiter=`,` &tagMode=`onlyTags` &tags=`hoge`]]
カテゴリ: general
投稿者: terada
大量の画像ファイルを扱う機会があったので、重宝したフリーソフトの紹介です。

Flexible Renamer v8.1
リネームソフトです。正規表現などかなり詳細な設定が可能で、階層化されたデータを扱うのにも便利にできています。

画像サイズ一括変換
画像サイズの一括変換ができるソフトです。
対象画像のサイズによって、変換するかしないかの条件分岐ができるのは、Photoshopのアクションと自動処理バッチの組み合わせでやるよりも断然便利です。保存先が指定できる(同じディレクトリに上書きもできます)点も、Phosothop使うより便利!補間方法も選択できます。

以上、二つのソフトを駆使すれば、ある程度いろんな条件にも対応できるはず。ほんと助かりました!
カテゴリ: general
投稿者: mio
VALUE DOMAIN で、サーバとドメインを既に取ったことがあるけど、また別のドメインを取りたいというときに、ドメイン毎にサーバを借りるのは勿体無いので、マルチドメインの設定方法を整理しました。ムームードメイン×hetemlの場合は、マルチドメインの設定方法がとても分かりやすかったように思いますが、VALUE DOMAINは少し分かりにくいように思います。ということで、まとめました。やり方は分かりにくいですが、手順は短いので意外とあっさり終わります。


▼ 手順1
VALUE DOMAIN で、新しいドメイン(例:sample.com)を取る。


▼ 手順2
VALUE DOMAIN の、sample.com のDNS設定画面で、
「自動設定」のプルダウンから、XREAのサーバ(例:s123.xrea.com)を選ぶ。
「保存する」ボタンを押す。


▼ 手順3
XREAのサーバ管理画面(例:s123.xrea.com)で、
「マイドメイン利用 > ドメインウェブ 」を選択。

↓以下のように設定します。

Main www.motokara.com(最初から設定しているドメイン)
Sub1 motokara.com
Sub2 www.sample.com 転送先 sample.com 強制にチェック
Sub3 sample.com 強制にチェック


「ドメイン設定」ボタンを押す。


▼ 手順4
サーバに、
/public_html/sample.com/
というフォルダを作り、そこに表示したいファイルを入れる。
このフォルダが、sample.comのルートになります。


以上です。
カテゴリ: PHP
投稿者: terada
.htaccessを作成するツールは、こことか便利なものがありますが、.htpasswdへの物理パスを調べなければならないのがちょっと面倒くさいので、もっと簡単になるようにPHPで作ってみました。

htaccess.zip[82clicks]
(phpのまま置いとくのが気持ち悪かったので圧縮してますが、単なるPHPファイルです)

<使い方>
1:「.htaccess」を置きたいディレクトリにこの「htaccess.php」を置く。
2:ブラウザでこのファイルにアクセスする
3:コピー&ペーストで「.htaccess」を作成

中身はこんな感じです。

<?php
$cwd = getcwd();
echo '<Files ~ "^.(htaccess|htpasswd)$"><br />';
echo 'deny from all<br />';
echo '</Files>';
echo 'AuthUserFile '.$cwd.'/.htpasswd<br />';
echo 'AuthGroupFile /dev/null<br />';
echo 'AuthName "Please enter your ID and password"<br />';
echo 'AuthType Basic<br />';
echo 'require valid-user<br />';
echo 'order deny,allow<br />';
?>
カテゴリ: PHP
投稿者: mio
PHPと、SSIは共存できないようなので、PHP上で、SSIの記述が動くような関数を作りました。以下、テンプレートとなるhtmlの記述の中で、
<!--#include virtual="/ssi/header.html" -->
といった部分を、そのファイルの中身のHTMLに置き換えてくれる関数です。
正規表現を使って実装してます。
ファイルのパスは、DOCUMENT_ROOTからの絶対パスとしています。

function ssi_tmp_engine($html)
{
//SSIの vertial の読み込みを、 PHPで実装
while( ereg("",$html, $matches) )
{
$fileName = $matches[1];
$templateHTML = file_get_contents( $_SERVER['DOCUMENT_ROOT'].$fileName ) or die("SSI ENGINE : ファイルが読み込めません\n");
$html = str_replace($matches[0],$templateHTML,$html);
}
return $html;
}
カテゴリ: FLASH (AS3)
投稿者: terada
FlashLiteだとOxygenというのを使ってるんですが、そういえばAS3のがなかったので調べてみると、kappa-labさんのAS3でFPSメータのコンポーネント というのがあったので、これを少し改変して使うことに。

-

FPSCounter

FPSCounter Image

AS3で使えるフレームレート計測用のFlashコンポーネントです。

FPSCounter.zip[137clicks]

※自作ではなくて、を少しいじっただけです。
本家の「ASTachoMeter」は、動的に配置する場合にエラーが出てしまうようだったので、その部分を書き換えたのと、デザインを変更しました。勝手に利用してしまったので、圧縮ファイルにはソースも付けています。

改変前本家サイト

<使い方>
DLファイルを解凍後、「FPSCounter.swc」を下記に保存してFlashを起動。メニューのウィンドウ>コンポーネントを選択すると、「標準のコンポーネント」下に「FPSCounter」が読み込まれているはずです。ステージ上に配置するだけで使えます。

WindowsXP:
C:\Documents and Settings\user\Local Settings\Application Data\Adobe\Flash CS3\ja\Configuration\Components
MacOSX:
Macintosh HD/Applications/Adobe Flash CS3/Configuration/Components


<コンポーネントインスペクタの設定項目>
interval
何フレームごとに集計結果を表示するか
digit
フレームレートの小数点以下の表示桁数