映画のエンドロール観る派?観ない派?

レンタルサーバiswebライトで自分のHPを作っています.
http://cgiscriptmarket.com/script.htmlで配布されているスロットマシン風のカウンタcgiを使用したいのですが上手くいきません.
このiswebはcgiの許可がされてます.指定のcgi-binのディレクトリを作り,その中にダウンロードしてきたcountのフォルダを入れました.ffftpを使ってreadmeにあるように転送モードもパーミッションも確認しました.
ダウンロードしたファイルで書き換えた箇所は以下だけです.
cgiの中の
$dir = "./count/";
を$dir = "./cgi-bin/count/"; に変更.
カウンタを貼り付けたいhtmlの<BODY>を<BODY onLoad="run()">に変更.
その下に(SSIの使用が許可されているので)
<!--#exec cmd="./count/count.cgi"-->
を貼り付けました.その後アップロードしてもWEBでは何の変化もなくカウンタの表示もありません.自分で考えられることは全てしたつもりですが,どうしても出来なくて..どなたかお願い致します.

A 回答 (10件)

>$dir = "./cgi-bin/count/";


実行ファイルの有る所から見て「cgi-bin/count/」
って事になるよ。
ディレクトリ指定が違うんじゃないかな。

この回答への補足

回答ありがとうございます.
上記件ですが,
readme には(カウンターを設置するファイルから見た位置)とあります.ディレクトリの構成は,
設置したいhtmlと同じ階層にcgi-binフォルダがあり,cgi-binの中にcountのフォルダ,更にその中にcgiファイルという構成です.

ですので,カウンターを設置するファイルから見た位置は
$dir = "./cgi-bin/count/"; 
になると思うのですが,違うのでしょうか?
正しくは,どのようなディレクトリ指定をすればよいのですか?

お手数ですが,ご教授お願い致します.

補足日時:2007/12/07 19:53
    • good
    • 0

SSIですよね。


拡張子をshtmlにしてます?

この回答への補足

回答ありがとうございます.

サイトからファイルをダウンロードした際にファイルの拡張子がcgiとなっていたのでそのまま拡張子はcgiにしていました.
確かに,readmeには,サーバにSSIの許可があるかないのかという記述があります.ということは,拡張子cgiをshtmlにすればよいかもしれませんね!ありがとうございます.

なぜ作者はSSIなのにCGIの拡張子を付けたのか疑問は残りますが,明日,時間があるときに試してみます.

補足日時:2007/12/08 22:44
    • good
    • 0

isweb を利用している者です。


iswebのSSIは、execコマンドは使えなくなっています。
isweb CGI・SSI全般についてのFAQ
http://help.www.infoseek.co.jp/isweb/20601.html
http://help.www.infoseek.co.jp/isweb/20602.html

以下のSSIコマンドの方を使用します。
<!--#include virtual="/cgi-bin/count/counter.cgi" -->
/で始まる絶対パスで記述するのがこつです。
また、このSSIコマンドを記述するファイルの拡張子は、[.shtml]のみです。

counter.plファイルの方は、拡張子[.cgi]にしないと実行できなかったと思います。
ファイル内のデータファイルのディレクトリー指定も絶対パスにすると呼び出しファイルの相対位置を気にしなくてもよくなります。
$dir = "/cgi-bin/count/";
あと、counter.plファイル内の文字列出力の手前(とりあえず、分かりやすいところで先頭から2行目あたり)に、header出力行も必要です。
print qq(Content-type: text/html\n\n);

配布ファイルの解説には、そういった細かい対応は書いてないので、以下のサイトで勉強してみて下さい。
http://midoriya-web.hp.infoseek.co.jp/isweblocal/

私も、このサイトをみて、ようやくSSIからperl CGIを実行できるようになりました。

参考URL:http://midoriya-web.hp.infoseek.co.jp/isweblocal/

この回答への補足

丁寧な回答ありがとうございます.

早速挑戦してみました.結論からいうと駄目でしたが,今までとは違いWEB上(ページ内の他は正常に出力され,おそらくカウンター部分)に[an error occurred while processing this directive] と,エラ-表示が出ます(あと,もう一歩な気がします).

以下がやってみたことです.おかしな点はあるでしょうか?

●以下のSSIコマンドの方を使用します。
<!--#include virtual="/cgi-bin/count/counter.cgi" -->

↑を貼り付けたいページにつけました.その際,サイトからダウンロードでぃてきた名称に変更しております.つまり,
<!--#include virtual="/cgi-bin/count/count.cgi" -->
次に,
●また、このSSIコマンドを記述するファイルの拡張子は、[.shtml]のみです。
と,あるので,貼り付けたいページの拡張子を、[.html]から[.shtml]に変更しました.
次に,
●counter.plファイルの方は、拡張子[.cgi]にしないと実行できなかったと思います。
counter.plは,こちらでいうcount.cgiだと解釈し,そのままの名前にしています.
以下の2つもcount.cgi内で修正しました.
●$dir = "/cgi-bin/count/";
●print qq(Content-type: text/html\n\n);

そしてエラー[an error occurred while processing this directive]です. なにか手はないでしょうか?

補足日時:2007/12/10 14:39
    • good
    • 0

ブラウザのアドレス欄にそのCGIスクリプトのアドレスを入力して、直接アクセスすると、どのように表示されますか?

この回答への補足

回答ありがとうございます!!

直接アクセスすると以下のようなメッセージが出ました.

CGIプログラムエラーのため表示することが出来ません.(500 Internal Sever Eroor)

ということは正しく設置できていないということですよね...

この直接cgiにアクセスして試す方法は,とりあえず貼り付けたいページ(***.shtml)に記述するコマンドは置いといて,cgi内の記述(パスetc)さえあっていれば表示されるのでしょうか?(パーミッションと実行ディレクトリが正しいという条件の下)

補足日時:2007/12/13 15:47
    • good
    • 0

とりあえず問題の切り分けを。


1.count.pl(count.cgiにしたんでしたっけ?)の設置方法の問題
2.設置しているshtmlの書き方の問題

1.のケースですが、配布サイトの「Slot_Counter v.1.0」だとすると。
まず、アドレスバーにURLを直接入力します。
URLが「http://sampleurl.com/index.shtml」なら、
http://sampleurl.com/cgi-bin/count/count.cgi?js
となります。
他の方の補足のようで恐縮ですが、talooさんの書いて下さったテストです。
ただ、このCGIの場合URLのおしりに?jsをつけないと絶対にブラウザで
表示できないらしいので、URLをちょっといじくります。
で、カウンターではなくべろべろとJavascriptが画面に表示されたら、
count.cgiの設置はOKだと思われます。
「Internal Server Error」とかでたら、設置に失敗してます。
パーミッションとか、$dirや$fileあたりのつづりが間違ってないか
確認してください。
あとは、パーミッションが777や666だとCGIが動かないサーバーが結構多いです。
iswebの仕様がどうなってるかわからないので、こちらはなんとも。

で、やっかいなのが2の方。こっちのが濃厚ですが。
とりあえず、エラーが出てる状態でブラウザのメニューからソース開いて、
<!--#から始まる記述がほかにないか、とか
「virtual=」以降のパスが特定の書き方じゃないとダメ、とか
まー色々。
ちなみに<!--#の件は、あるのが問題ではなく、正しく書かれているかというお話。
広告設置しないと規約違反でアウトだと思いますんで。

そして最終手段。
SSIでの設置をあきらめる。
このカウンターの場合、javascriptで設置できるらしいので、素直に
そっちで動かすとか。

この回答への補足

丁寧な回答ありがとうございます.

●count.pl(count.cgiにしたんでしたっけ?)の設置方法の問題

拡張子がplの物はダウンロードしたときにありませんでした.拡張子.plと.cgiは同じ意味ではないのでしょうか?

●設置方法の問題
以下の2つを試みました.
http://******.hp.infoseek.co.jp/cgi-bin/count/co …
http://******.hp.infoseek.co.jp/cgi-bin/count/co …
結果は,Internal Server Errorでした.
再度,パーミッション(cgiは755に設定)とか、$dirや$file確認してみます.これをクリアすれば,↑のアドレスを打ち込めば,とりあえず表示が出来るようになるのですか?その後,表示させたいページでカウンタを表示させるために(shtml)のコマンドの問題とかになるという解釈でよいですか?

SSIでなくてもこのカウンタを動作させることが出来るとはしりませんでした.その際は,.jsのファイルを作成し,それをhtmlに読み込むという方法でよいのでしょうか?

お手数かけますが,よろしくお願いします.

補足日時:2007/12/13 15:56
    • good
    • 0

>ANo.5


そういう仕組みなら、ブラウザで見られないなぁと思いつつ、
興味があったのでソースコードを見てみましたが、
もともとSSIのexec禁止の環境では使用出来ない仕組みになっています。

添付のReadme.txtにあるとおり、この方法で実行してみて下さい。
> ◇SSIの使用が許可されていない場合
> <script src="./count/count.cgi?js"></script>

-------------------------
SSIで実行する場合、技術的な内容になりますが、
execで実行する場合はCGIスクリプトからContent-Typeが出力されていなくても表示出来ますが、
includeで実行する場合はContent-Typeを出力しなければなりません。

87行目付近
if (! $buffer) { print "<script>\n"; }
else { print "Content-type: text/plain\n\n"; }

という部分がありますので、以下のように変更してみて下さい。

その2行の上に、以下のように1行追加し、elseの前に#を付ける

print "Content-type: text/plain\n\n";
if (! $buffer) { print "<script>\n"; }
#else { print "Content-type: text/plain\n\n"; }

*動作未検証です。

この回答への補足

丁寧な回答ありがとうございます.

SSIではなくjavascriptで使用すれば,禁止事項や,プログラムの書き換えなく出来るみたいなので,先ずはその方法でトライしてみたいと思います.

少し混乱してきたので,再度,DLし実行してみました.
http://****.hp.infoseek.co.jp/cgi-bin/count/coun …にアクセスした結果,yasagure-kunさんがANo.5で言われてるような,プログラムの文字とカウンタの枠のみが表示されました.ということは,設置は正常に出来たということでしょうか?だとしたら,何故正常に表示されないのでしょうか?
DLしてきたgif(カウンタの数字ファイル1~9)を開いたら,表示できなくx(バツ)となっていることに関係があるのでしょうか?

以下が実行したことです.
DL解凍
アスキーモードで転送.図は,バイナリモードで転送.(cgi-bin/の下に)
パーミッションをcount(777) count.cgi(755)count.dat (666)に変更.

以上です.
すみませんが,回答よろしくお願い致します.

>yasagure-kunさん
ANo.5の私の補足内下部のjavascriptの記述は勘違いですので流して下さい.すみません.

補足日時:2007/12/13 16:31
    • good
    • 0

補足と訂正。

m(_ _)m
> 興味があったのでソースコードを見てみましたが、
興味が湧いたので、の間違いです。

> もともとSSIのexec禁止の環境では使用出来ない仕組みになっています。
execのうち、<!--#exec cmd="count.cgi" -->のみ使用可能です。
<!--#exec cgi="count.cgi" -->という書き方も、SSIとしては可能ですが、このCGIスクリプトではカウンターが表示されません。

表示されないだけで、カウンターとしては機能していると思います。
    • good
    • 0

> プログラムの文字とカウンタの枠のみが表示されました.ということは,設置は正常に出来たということでしょうか?


設置は正常のようですね。

再度ダウンロードして確認してみましたが
、、この画像ファイル、壊れてますね。

サンプルページに
> カウンター用画像はココに多少有りますので、
というページがあったので圧縮ファイルをダウンロードしてみましたが、全部壊れてるんでしょうか?
公開前に自分で解凍して内容を確認されてないのかなぁ。。。


他の素材やさんからカウンター用画像だけ借りてきて、
同じファイル名で上書きすれば、表示されると思います。

この回答への補足

回答ありがとうございます.

他のフリーのページのGIF画像をダウンロードしてきて,バイナリ転送モードでアップし,
http://******.hp.infoseek.co.jp/cgi-bin/count/co …​にアクセスしたところ,変わりなく,プログラムの言語とカウンターの枠のみの表示でした.


●というページがあったので圧縮ファイルをダウンロードしてみましたが、全部壊れてるんでしょうか?
他のも壊れているようです.

補足日時:2007/12/15 20:24
    • good
    • 0

ん?外部JavaScriptに切り替え?って思って読み返してみたら、参考にするためにダウンロードしたファイルが違っていた。

m(_ _)m
zipファイル名を見ながら回答していたのでファイル名が微妙に間違っていて済みません、ちゃんと合わせて頂けたようでよかったです。
いずれにしても、iswebライト のフリーサーバーでは、#exec cmd も#exec cgiも使えなくなっています。かわりに、No3で記述の #include virtualが使用可能、こちらは#exec cgiと同等機能です。

でも、外部JavaScriptとして出力することが出来るならば、普通に呼び出しok?
と思ったら、またまた、宣伝挿入の弊害がありまして、Content-typeにtextが指定されているとtext/plainであっても、宣伝用htmlタグ挿入が行われるので、Content-typeは application/x-javascript; で指定する必要があります。
No6の方の変更で、カウントは実行されるけどJavaScriptとしてはエラーということです。
画像が表示されないのは、JavaScriptが動作してないからimg タグが正しく出力出来てないと言うことでしょう。
No6の方の変更に加えて、print の行だけ以下のように書き換えてみて下さい。
print qq(Content-type: application/x-javascript;\n\n);

これで、いけるはずなんですけど、どうでしょうか。

あと、添付画像について、slot_counter.zipをダウンロードし直してみたところでは、壊れてはいないようでしたけど?。
ダウンロード時の問題なら、解凍自体が出来ないようにも思うし、gif89aファイルはOSの違いで表示できないということはないと思うのですが。解凍ソフトの問題??
私のOSはwindowsXPで、解凍ツールはLHMeltingを使っています。

この回答への補足

丁寧な回答ありがとうございます.

指定したWEBページに読み込むために #include virtual等の変更が必要なのは理解出来るのですが,cgiに直接アクセスして表示出来てからの話になるのですよね?つまり,
http://******.hp.infoseek.co.jp/cgi-bin/count/co …
でカウンタの正常動作を確認できたら #include virtualのコマンド等で指定したWEBページに設定するプロセスへ進めると解釈しています.
しかし,現在cgiに直接アクセスしても言語の表示で,正しくカウンタが表示されなく,悩んでおります.何故,カウンタが表示されないのでしょうか?

添付画像については,こちらでは,やはり壊れている表示になります.私のOSはwindowsXPで、解凍ツールはWinrarですが,この問題は他のフリー素材の画像GIFをダウンロードしてきて対処しました.

とにかく,http://******.hp.infoseek.co.jp/cgibin/count/cou …にアクセスして,カウンタを正常表示というところまで成功させたいのですが,なにかアドバイスはないでしょうか?よろしくお願いいたします.

補足日時:2007/12/16 19:35
    • good
    • 0

カウントの正常表示とは、JavaScript実行後の画像表示のことを言っているならば、まだ認識が不十分かと思います。


 http://******.hp.infoseek.co.jp/cgi-bin/count/co …
への直接アクセスでは、JavaScriptソース表示にしかなりません。
IEだと勝手にhtml表示するかもしれませんので、「ページのソースを見る」で、このJavaScriptソースの前後に、iswebの宣伝挿入タグが無いのを確認したら、
本番ページのカウンターを表示させたいところに以下の様に埋め込んで、JavaScript onで表示させてみて下さい。
<script type="text/javascript" src="/cgi-bin/count/count.cgi?js"></script>

この回答への補足

回答ありがとうございます.

>カウントの正常表示とは、JavaScript実行後の画像表示のことを言っているならば、まだ認識が不十分かと思います。

直接アクセスでは,JavaScript実行されないのでカウンタが確認出来ないんですね.では,直接表示させようとしたらプログラムの表示が出来れば正常設置できているということですよね?(ここが現在の状態です.)

>本番ページのカウンターを表示させたいところに以下の様に埋め込んで、JavaScript onで表示させてみて下さい。

やってみたのですが,webで表示させても何も変化がないです.
どうしてでしょうか...聞いてばかりで本当に申し訳ないです.

補足日時:2007/12/17 02:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!