PV
・サイトメニュー
各種公式FAQ
XREA.COM公式FAQ
広告免除サービス詳細
Value-Domain.com公式FAQ
AccessAnalyzer.com公式FAQ
トップページ(フレーム解除)
初めにお読み下さい
サイト利用上の注意
免責とお願い
当サイトへのリンクについて
FAQの一覧
規約全般について
アカウントについて
FTPについて
CGIについて
広告について
独自ドメインについて
有料広告免除について
その他について
XREA.COMでのCGIの設置例
XREA.COM関連リンク
オフィシャルサイト
公認サポートサイト・ファンサイト
お役立ちサイト
管理人自己紹介
サイトの経緯
掲示板
|
CGIについて
使えるCGIの種類は?_
Q.
どんな種類のCGIが使えるの?
A.
Perl、Ruby、Python、C/C++、PHP3/4が利用可能です。
(XREA.COM仕様より引用)
2002年2月7日以降、C/C++言語CGIのコンパイルがXREA.COMのサーバ上で出来るようになりました。
参考…コンパイラー開放について
CGIの実行パスは?_
Q.各CGIの実行パスは何?
A.各CGIの実行パスは以下の通りです。
(XREA.COM仕様より引用)
絶対パス : /virtual/ID/
perl : /usr/bin/perl、/usr/local/bin/perl
php3 : /usr/local/bin/php3
php4 : /usr/local/bin/php、/usr/local/bin/php4
ruby : /usr/local/bin/ruby
python : /usr/local/bin/python
sendmail : /usr/sbin/sendmail
nkf : /usr/local/bin/nkf
sh : /bin/sh
csh : /bin/csh
uuencode : /usr/bin/uuencode
uudecode : /usr/bin/uudecode
仕様には表記されていませんが、gzipの利用も可能だと言う情報があります(未確認)。
パスは「/bin/gzip」です。
尚、PHPを「public_html」内に設置した場合、セキュリティの関係上、通常のCGIとして動作します。
CGIの設置ディレクトリは?_
Q.
「cgi-bin」とか作る必要があるの?
A.
CGI専用のディレクトリを作る必要はありません。
「public_html」の中であればどのディレクトリに設置しても、書式とパーミッションさえ正しければ、正常に動作します。
CGIのパーミッション_
Q.
パーミッションはどう設定すれば良いの?
A.
XREA.COMでのCGI実行時の推奨パーミッションは以下の通りです。
(XREA.COM仕様より引用)
■実行パーミッション
・実行ファイル:0700(rwx------)以上
・データファイル:0600(rw-------)以上
・CGI格納ディレクトリ:0705(rwx---r-x)以上
・データ格納ディレクトリ:0700(rw-------)以上
これ以外のパーミッションでも動作はしますが、例えば「0777(rwxrwxrwx)」等、極端に制限の緩いパーミッションでは、CGIの実行が禁止されます。
仮にCGIの説明書等で「実行ファイルのパーミッション…777」等と書かれていても、鵜呑みにしないで下さい。
尚、実行ファイルとデータファイルの見分け方は
- ファイルをテキストエディタで開く
- 先頭行をチェックする
- 「/usr/local/bin/perl」等の記載があれば実行ファイル、無ければデータファイル
とすると、解りやすくて便利です。
注意:画像ファイルやHTMLファイル等、一般のHTMLページを構成する際にも用いられる種類のファイルは全て「0604(rw----r--)」等、外部から参照できるパーミッション設定にしておいて下さい。
絶対パスとは?_
Q.
結構出てくるけど…そもそも「絶対パス」って何?
A.
別名フルパスとも呼ばれ、サーバルートから目的のファイルへのパス(道のり)を示します。
例えばCGI等から「http://アカウント名.サーバ名.xrea.com/cgi.dat」というファイルを参照したい場合、参照アドレスを「/virtual/アカウント名/public_html/cgi.dat」として下さい。
このように記述しておけば、CGIがどのディレクトリで動作していても、常に「http://アカウント名.サーバ名.xrea.com/cgi.dat」のファイルが参照されます。
なお、普通のHTMLで言う「絶対パス」とは異なります。
「sendmail」は使えるの?_
Q.
「sendmail」を使ったCGIは設置出来るの?
A.
出来ます。
「sendmail」のパスは「/usr/sbin/sendmail」です。
ただし、メーリングリストやメールマガジン等、不特定多数の人間にメールを配信するようなシステムの運用は禁止されています。
また、純粋な「sendmail」ではなく「qmail」を使った方式ですので、幾つかのコマンドは使用出来ませんし、記述方法によってはメールの送信処理自体行なわれません。
execコマンドを使わずにCGIを使いたい_
Q.
SSIでexec以外のコマンドでのCGIの動かし方は?
A.
includeコマンドを使います。
<!--include virtual="CGIへの絶対パス"-->という記述をすることで、使用出来ます。ただし、いくつかの留意点があります。
- CGIが単独で動作しなければならない。
- ここでいう絶対パスは、「サーバ用絶対パス」ではなく、「HTML用絶対パス」である。
- CGI動作時のファイルの参照ディレクトリに差異が生じる。
上の3つの点に注意して下さい。
まず、execコマンドを利用するCGIに直接アクセスしてみましょう。アクセスカウンタCGI等の場合、無事に表示されれば大丈夫です。「Internal Server Error」が発生した場合は、若干の修正が必要です。
修正といってもさほど難しくはありません。ファイルの2行目…CGIの実行パスが記載されている行の直後の行に「print "Content-type: text/plain\n\n"」という一文を付け加えて下さい。
(ここはリファレンスサイトではないので、この文について説明はしません。おまじないとでも解釈しておいて下さい)
殆どのSSI用CGIは、これで動きます。動かない場合は…動くまで自分で挑戦するか、諦めましょう。
CGIが単独で動くようになったら、HTMLにSSI文を記述して、実際にCGIを呼び出してみます。ここで注意することなのですが、例えば「http://アカウント名.サーバ名.xrea.com/bbs/bbs.cgi」のCGIを呼び出したい場合、このときの絶対パスは「/virtual/アカウント名/public_html/bbs/bbs.cgi」のような表記ではなく「/bbs/bbs.cgi」のように、単純に「http://アカウント名.サーバ名.xrea.com」のみを取り除いたパス名で指定して下さい。
カウンタ等のCGIの場合、単独では動いたのにも関わらず、HTMLから呼び出すと、画像が表示されないことがあります。これは画像ファイルやログファイルを参照するディレクトリが異なっている為に起こる現象です。例えば単独で動いている時の画像のURLと、HTMLから呼び出し時、閲覧不可になっている画像のURLを比較してみて下さい。
単独実行時…http://アカウント名.サーバ名.xrea.com/counter/gif/1.gif
HTML呼び出し時…http://アカウント名.サーバ名.xrea.com/gif/1.gif
等となっていれば、CGIの設定で画像の参照ディレクトリを「./gif/」から「./couneter/gif/」に変更して、再度実行してみて下さい。今度は「単独時…失敗」「呼び出し時…成功」のような感じになると思います。
execが使える今となっては、わざわざincludeを使うメリットは無いと思われますが…。
禁止されるCGIの使い方は?_
Q.
CGIは、どんな使い方が禁止されているの?
A.
サーバにとって不利益にしかならない使い方…それだけです。
解りやすく言えば、
- アクセスカウンタCGI等、基本的に広告が表示されない(HTMLを出力しない)CGIを外部サイトから参照するのは禁止。
(リソースの泥棒行為)
- 掲示板CGIやチャットCGI等を、XREA.COM提供の広告を表示させずに外部サイトから呼び出すのは禁止。
(リソースの泥棒行為)
- リソースを占有する類のCGIの利用は禁止。
(慢性的にサーバのレスポンスが悪くなる上に、サーバがダウンした場合、他ユーザに多大な迷惑を及ぼす)
- サーバのセキュリティを低下させる恐れのあるCGIの利用は禁止。
(サーバがハッキングされた場合、他ユーザに多大な迷惑を及ぼす)
となります。
ゲームCGIなどの高負荷CGIは2つ目の項目に当てはまるので、禁止されるというわけです。
禁止されているCGIは?_
Q.
禁止されているCGIはある?
A.
・異常に負荷の高いもの(ゲームCGIも含む)
・メールを大量送信するもの
・違法な用途に用いられるもの
これら全てが禁止されています。
見落としがちですが。ゲームCGI置き場に利用している場合や、ろくに管理されていないアップローダを設置している場合は、例え負荷が低くても、アカウントが凍結・削除されることがあります。
ちなみに、多くの無料ウェブサービスで禁止されているチャットCGIの設置は大丈夫なので、安心して下さい。ただしこちらも、利用者の増加や呼び出し回数の増大によって負荷が高くなった場合は、禁止される可能性があります。
ウェブリング、リンクランキングの利用は?_
Q.
ウェブリングとかリンクランキングとかのCGIは使っても良いの?
A.
前者は不可、後者は可です。
XREA.COMでは「広告の表示されないCGI」を外部サーバから参照することは禁じられています。
ウェブリングCGIは「外部からCGIにアクセス後、必ずしもCGI設置サイトに飛ぶとは限らない」為、禁止されています。
一方リンクランキングCGIは「外部からCGIにアクセス後、必ずCGI設置サイトに飛ぶ」という性質を持っている為、許可される形になっています。
(ただし、ここでも負荷率の増大によって、禁止になる場合があります)
もしもXREA.COMでウェブリングCGIを設置したければ、現在準備中であるという「ウェブリング専用サーバ」の登場をお待ち下さい。
(本当に実現されるかどうかは不明)
CGIの負荷を軽減する方法は?_
Q.
負荷率が高くて心配…軽減する方法は無い?
A.
一応、あります。
PERL言語のCGIを使うのをやめ、PHPやC/C++言語のCGIを使うことで、負荷が軽減できます。
(PHPの場合、CGIモードで動かしている時は効果為し)
RUBYは逆に負荷率が増大するそうです。
ローカルで動くCGIが動かない_
Q.
ローカルでテストし、正常に動作したけど、サーバにアップすると正常に表示されません。何故ですか?
A.
原因はいくつか考えられます。
まずもっとも基本的なものとして、
「アップロードモードを間違えている(CGIはテキストモードでアップして下さい)」
や
「パーミッションが間違っている(XREA.COMでのCGI実行パーミッションは700です)」
等があります。
まぁ、この辺は基本ですので、理解出来なければCGIは設置出来ないものと諦めましょう。
XREA.COM特有の原因として最も可能性が高いのが、「広告が邪魔をしている」ということです。
XREA.COMでは通常、HTMLを出力するファイルには全て自動的に広告が挿入されます。
単なるHTMLファイルであれば特に問題ありませんが、いくつかのCGIにおいては、この「自動挿入広告」が仇となり、CGI実行の妨げとなる場合があります。
その場合、別項を参照して広告の自動挿入を無効にすることで、解決します。
ただし、この状態では広告が一切表示されませんので、当然規約違反になります。
CGIを改造するなどをして、手作業で広告コードを埋め込みましょう。
尚、特に「自動挿入広告」の影響を受けやすいCGIとして、以下のものが挙げられます。
- アクセスカウンタ
- アクセスアナライザ
- ランキングリンク(外部からアクセス時)
「直接HTMLを出力しないCGI」は、「自動挿入広告の影響を受けやすい」と考えて下さい。
カウンタが表示されない_
Q.
カウンタが正常に動作しない。滅茶苦茶に化けた文字が表示される。何故?
A.
「自動挿入広告」を無効化して下さい。
「自動挿入広告」の影響を受けている恐れがあります。
殆どの場合「自動挿入広告」を無効化することで回避出来ます。
CGIの動作が重い_
Q.
やたらと動作が重くて使い物にならないのだが?
A.
CGI自体の問題の可能性もありますが…。
「自動挿入広告」の影響を受けている可能性があります。
広告を自動挿入型で動作させているとCookieの制御が上手くいかず、CGI(ブラウザ?)の動作が極端に重くなります。
「自動挿入広告」を無効化することで改善出来る可能性があります。
それでも駄目なら、CGI自体の問題だと思って諦めて下さい。
CGIの動作が変_
Q.
動くには動くけど…何か変。使える機能と使えない機能がある。何故?
A.
恐らく、「自動挿入広告」の影響を受けている為と思われます。
別項を参照して、「自動挿入広告」を無効にして下さい。
ページ振り分け型のCGIが動かない_
Q.
端末によってページを振り分けるCGIを使ってるけど、いざアクセスすると「302 Found」と表示されて、自動的に移動してくれない。何故?
A.
「自動挿入広告」の影響を受けています。
その場合、別項を参照して広告の自動挿入を無効化すれば解決出来ます。
ただし、例えば「http://アカウント名.サーバ名.xrea.com/」とアクセスした際に振り分けたい場合には使えない方法です。この場合、.htaccessに「LayoutIgnoreURI CGIのファイル名」の一文を記述してアップした後、アクセスしてみて下さい。
無事、正常に振り分けられると思います。
画面が真っ白になる_
Q.
一部のCGIで、実行すると真っ白の画面が表示される。何故?
A.
チャットなど、フレームを使ったCGIの場合、よく発生します。
詳しくは別項を御覧下さい。同一の症状ですし、同じ方法で対処出来ます。
Internal Server Errorが発生した時の対処法_
Q.
Internal Server Errorが出て、CGIが動かない。どうすれば良い?
A.
以下の項目をチェックして下さい。
XREA.COMではInternal Server Errorが発生した際、予めエラーの原因(と思われる要素)が表示されます。この時に
- パーミッションが間違っている。
- CGI自体に記述ミスがある。
- .htaccessに誤った記述がある。
- アップロードモード(アスキー・バイナリ)が間違っている。
と表示されるので、しらみ潰しにチェックしてみましょう。
まず一つ目の項目…パーミッションですが、これはCGIの実行ファイル(及びその関連ファイル)に設定されたパーミッションが誤っている、もしくは制限が緩過ぎる場合に発生するエラーです。適切なパーミッションを設定しましょう。
次は一つ飛ばして「.htaccessに誤った記述がある。」です。
もしもこんなファイルを設置した覚えが無い、或いは「.htaccessって何?」な方は無視して下さい。尚、.htaccessを設置している方は、本当に記述に間違いがあるか、或いはXREA.COMでは禁止されているコマンドを使おうとしている可能性があります。適宜修正して下さい。
「アップロードモード(アスキー・バイナリ)が間違っている。」
CGIスクリプトは基本的にテキストファイルですので「アスキーモード」でアップロードして下さい。多くのFTPクライアントソフトでは、拡張子により自動的にアスキーモードでアップロードされますが、一応ソフトの設定を確認して、再度アップロードしましょう。
転送モードを強制的に指定するのも効果有りです。
最後になりましたが…一番厄介な原因である「CGI自体に記述ミスがある。」です。
こればっかりはどうしようもありません。PERLの知識が無い限りは修正も不可能です。
しかし、一応回避策もあります。
どこかのウェブサイトで配布されているCGIである場合…
この場合、初めからCGIにエラーがあるとは考え難いです。
(作者が記述間違いをしている場合を除く)
まずはダウンロードしてきたファイルをまったく改変しない状態、或いは最低限の設定項目のみ変更した状態で設置して、様子を見てみましょう。配布元にサポート掲示板があれば、そちらも参照して下さい。
自動挿入広告の影響を受けている可能性があれば、別項も参照して確認してみて下さい。
それでも駄目なら、下の事項を試してみて下さい。
自分で作成したCGIである場合…
90%間違いなく、スクリプトの記述ミスです。まず、ローカルで正常に動作しているのか確かめましょう。
それで駄目なら、別項を参照しましょう。
尚、PERLスクリプト限定ですが、CGIの記述ミスを簡単にチェックする方法も存在します。以下のURLで配布されていますので、試してみて下さい。
(私は結構愛用しています)
Error_Check(Perlチェッカー) byお蕎麦屋あっぽー庵
殆どのCGIは、これで発見出来たエラーを潰すことで正常に動作します。
番外編:広告を自分で挿入した場合…
CGIを改造して、自分で広告を挿入した場合にも、記述によってはエラーが発生します。まず、第一に確認することとして、
- 広告コード内の「"」を「\"」にする。
- 広告コード内の改行を削除する。
……というか、これしかありません。
これで駄目な場合は挿入位置が根本的に間違っていると思われます。
○△×というCGIが動かない_
Q.
○△×というCGIだけ、どうしても動かないのだが?
A.
これまでの全ての方法を試したのであれば、ほとんどど有り得ません。
XREA.COMではCGIのコマンド制限は特にされていませんので、上記の方法を全て試したのであれば、特定のCGIだけが動かない…ということは無いと思われます。
しかし、どうしても動かない場合、XREA SUPPORT BOARDで質問してみて下さい。
親切な方が、原因を究明してくれるかもしれません。
なお、質問の際には必ず
- 動かないCGIの名称と配布先
- どんな方法を試したか
- 自サイト(CGI設置先)のURL
を記載しておきましょう。
よく、なにも記載せずに「○△×が動きません!」といった書き方を記載する人がいますが、解決までにかなりの時間を要する上、場合によってはそのまま放置されてしまうので気を付けましょう。
この時、たまに「自分のサイトは非公開にしているから…」等と言ってURLの記述を拒否する人がいますが、この場合、殆どが放置されます。突き放す言い方ですが、「どうしてもURLを公開したくない」という人は「質問する権利が無い」と考えて、自分で解決して下さい。
該当CGIがゲーム系のものであった場合、設置後、XREA.COMの監視の目が厳しくなったり、他ユーザから目の敵にされたり…と、アカウントの存続が危うくなったりすることも考えられます。
(ちなみに、解決の際にも「ゲームCGIは負荷が高いので気を付けるように」と警告を喰らいます。少なくとも私は警告します)
ゲーム系CGIの設置は、なるべく自分の力で解決した方が「安全」ではあります。
どうやっても動かない_
Q.
あらゆる方法を試したけど、どうしてもCGIが動かない。どうすれば良い?
A.
新規登録の方ですか?
XREA.COMでは新規登録の際、登録を完了して1時間ほどでFTPアクセスが可能になります。
ところが、実際にindex.html等をアップロードして「http://アカウント名.サーバ名.xrea.com/」でアクセスしても、表示されないことがあります。これはアカウントが登録された際、実際にアカウントが反映されるまでにタイムラグが起こる為に起こる現象です。
そして、CGI実行への反映には更にタイムラグが生じます。各々、最低1時間〜最大24時間のタイムラグですが、新サーバにて新規会員を募った時などは登録が集中する為、更に時間がかかる可能性があります。
こればっかりはどうしようもありませんので、1週間は様子を見て、それでも解決しなければXREA SUPPORT BOARDで障害報告をし、調査してもらって下さい。
なお、調査を依頼する際には必ず、自分のサイトのURLを記載しましょう。
事情によりURLを公開したくない場合は、メールフォームから直接問い合わせて下さい。
|