- ベストアンサー
hi-hoでCGI
こんにちわ。 hi-hoというプロバイダを利用しています。 自分のHP上で自作(というよりも改造)の掲示板を使っているのですが、ファイルロック(flock)を使用すると500番のサーバーエラーが出てしまいます。 ファイルロック部分をコメントにするとエラーは起きません。 プロバイダに転送する前に文法チェックも行っており、シンタックスOKの状態です。 また、自分のPCにApacheをインストールして、動作確認も行っております。 (もちろん、転送時にはPerlの場所は書き換えてます。) しょうがないので、現状では自分のHPの掲示板はファイルロックなしで動かしております。 また、最近掲示板に、1ページに表示する書き込み数を制限し、過去ログがある場合は「次へ進む」リンクがあるというような機能を付けてみたところ、これも自分のPC上では動作するのですが、hi-hoに転送するとサーバーエラーが出てしまいます。 何かhi-hoには、Perlの使用に制限があるのでしょうか? hi-hoのHPでは、上記のような制限があるとは特に書かれてはおりません。 http://home.hi-ho.ne.jp/home/service/rental_web.html hi-hoに関する詳しい情報をお持ちの方がいらっしゃいましたら、ぜひぜひ教えて下さい。 また、そういった内容のHPをご紹介していただくのでも結構です。 また、こういった質問はプロバイダにしても良いものなのでしょうか? hi-hoのHPには、次のように書かれていました。 『ホームページの作成、登録、CGIの作成及びサンプルCGIのカスタマイズに関するサポートはおこなっておりませんので、関連書籍や関連Webページ等をご覧になり、お客様ご自身でおこなって頂きますようお願い致します。』 質問が長くて申し訳ございません。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> Hi-HoのHPでは、シンボリックリンクは使用できない旨、書いてあります。 おっと失礼、そういえばそれの回避策を考えているうちに すっかり忘れてしまったんでした、面目ない。^^; 何はともあれ、動作おめでとうございます。 多分、恐らくですが、使えないサブルーチンの中にシス テム標準という前提で、perlについてくるものを使って いたのかも知れません。その部分を気にして追って見て はと思います。 marimo_cx
その他の回答 (3)
- marimo_cx
- ベストアンサー率25% (873/3452)
締め切ってませんね、答えようと思っていたのにすっかり 忘れていました(汗)。次の質問が出てしまったので焦り ました。 flockは何の目的で使っているのでしょう? 掲示板ならシンボリックリンクでロックファイルを使えば 解決できるはずです。hi-hoの説明見てきましたが、cgiは ファイル所有者権限で実行されるということで、nobodyよ りかなりやりやすいはずです。 使えない関数を無理に使おうとせず、他のアプローチをし ましょう。 あと、hi-hoはPerl4ですけど、その辺りは考慮して作業さ れていますか? marimo_cx
お礼
何度もご親切にありがとうございます。 flockは掲示板に書き込む際の、ファイルロックに使用しています。 シンボリックリンクというのが何か、分かっていないのですが(調べておきます・・・。)、Hi-HoのHPでは、シンボリックリンクは使用できない旨、書いてあります。 Perl4で使用できない関数などは使用していない、というCGI本の言葉を信じて作っております。(笑) >使えない関数を無理に使おうとせず、他のアプローチをしましょう。 そうですね。 この質問をした当初の目的は、Hi-Hoでは何が使用できないのかが分かっていれば、初めから他のアプローチで作れるのになぁ、と思い、他力本願ではありますが、情報をお持ちの方がいらっしゃったら教えていただければ、と思い質問したのでした。 とりあえず、もう少し頑張ってみます。 ありがとうございました。
補足
本当に本当に申し訳ないです。 別の質問の回答で、marimo_cxさんがおっしゃっていたとおり、粘りが足りなかったようです。 もう一度試してみようと思い、サブルーチンが書いてあるbbs-lib.plというファイルを呼び出すのを止めてみたところ、見事にエラーが出ませんでした。 (require 'bbs-lib.pl';とそれに関係する部分をコメントにしてみた。) そこで、bbs-lib.plの中に、使用していないサブルーチンがいくつかあったので、それを削除してから、再度bbs-lib.plの呼び出し、処理の実行をしてみたら、これまた正常に動作いたしました。 結論として、bbs-lib.plの中の削除したサブルーチンのどこかにエラー(?このファイルもシンタックスOKだったのですが・・・。)があり、それが原因で動かなかったようです。 $num = $all[0] + 1;もきちんと動きました。 また、flockの変わりにロックファイルを作るというやり方でやってみたら、それもきちんと動きました。 本当に本当に本当にごめんなさい。 いろいろお騒がせした結果がこれとは、情けなくて恥ずかしくて申しわけなくて、涙が出そうです。 安易に人(プロバイダ)のせいにせず、100%のチェックをかけるべきでした。 削除したサブルーチンのどれが問題だったのか、ちゃんと突き止めて今後の参考にしていきたいと思います。 貴重なお時間をこんなバカな質問のために使わせてしまって、申しわけございませんでした。 本当にありがとうございました。
私も以前Hi-HOを使わせてもらっていました。あそこは CGI置くには面倒なんですよね。私はとうとう諦めました。(^^ゞ さてCGIを置く方法についての解説サイトですが、Hi-HOでそういったサイトを作っている方がいるようです。Hi-HOの特殊な事情も熟知していらっしゃるようですので参考になさってみてはいかがでしょうか? # 私の知識では全く参考にならないでしょうから...
お礼
早速のご回答ありがとうございます! 参考URL、拝見いたしましたが、結局、プロバイダを変えようかな・・・という結論に達しました。(笑) せっかくご返答いただいたのに、すみません。 私も面倒になってしまいました。(笑) ありがとうございました。
- UUURRGGHHYY
- ベストアンサー率54% (13/24)
500のエラーって、Internal Server Error(多少表示は違うかもしれないですけど)ですから、flockの使い方に問題があるような気がします。で、確かflock()って、OSに依存していて、プラットフォームによって、微妙に実際の動作が違うので、flock()で制御しようとしているファイル(またはファイルの指定の仕方)に問題があって、その際の振る舞いが予想と違っていて、正しく動作していないのではないでしょうか。 #perl -c hogehoge.pl で文法があっていることは確認済みなのですよね?
お礼
早速のご回答ありがとうございます! >確かflock()って、OSに依存していて、プラットフォームによって、微妙に実際の動作が違うので、flock()で制御しようとしているファイル(またはファイルの指定の仕方)に問題・・・ むむむ。UNIX系のサーバじゃないと、flockは使用できないとは聞いたことがあるのですが、微妙に動作が違うとは・・・。 ちょっと現状の私のレベルでは、どう回避してよいものやら・・・。 >#perl -c hogehoge.pl で文法があっていることは確認済みなのですよね? MS-DOSプロンプトで文法チェックをしています。 最後にシンタックスOKが出ています。 今日いろいろ確認しておりまして、どうも配列変数の値を指定するとまたまたエラーが出るようです。 書き込みに番号を振りたくて、$num = $all[0] + 1;というようにしてたのですが、エラーが出るので、いろいろコメントにしたりしてチェックしていたら、ここの部分をコメントにするとエラーが出なくなりました。 もう、疲れてきてしまって(笑)プロバイダを変えようかな、と思い始めました。 ご丁寧に回答していただいたのに、すみません。 ありがとうございました。
お礼
何度もご親切に、本当にありがとうございます~。 削除したサブルーチンは、3つほどでしたのでじっくり追ってみます。 本当にお世話になりました。 ありがとうございました。