過去ログ NO.1148217334
□ はるか [2006年05月16日20時37分]こんにちわ、長らくご無沙汰していました、はるかと申します。 NXer氏には大変お世話になっているものです。 久しぶりにすえぽんCGIをお借りしにきました。 サーバにshadow_cgiをアップロードしましたが、早速設置に戸惑っています。
今回はサーバーがhi-hoなのでcgiを置く場所と、画像ファイルを 収納場所が別々で、おまけにCGIはcgi-bin直下でなかったら動きません、 反対に画像はcgi-binでは開かないようです。
下のように階層を作ったのですが、相対パスの設定が悪いのか、 システムエラーになります。 ファイルを呼び出すURLも下記かっこのように異なります。 だれかhi-hoで設置して居られる人があったらサポートいただけませんか。
http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/shadow.cgi です。尚、テストするためのシーディーアイを作って同じ領域に入れています。
http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/check.cgi +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
├ html( http://www.kit.hi-ho.ne.jp/s-saimoto/) |...│ |...├index.html(トップページ) |...│ |...├bgi/ |...│ |...├image/ |...│ |...└temp/ |......│ |......└date.txt(拡張子cgiをtxtに変更) | └ cgi-bin( http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/) ....│ ....├shadow.cgi (775)本体 ....│ ....├jcode.pl(705) ....│ ....└csm_mail.pl(705)
□ NXer [2006年05月17日18時32分] >ご無沙汰 はるかさん、こちらこそ。NXerです。
>http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/shadow.cgi >システムエラー:データ記録ファイルが開けませんでした(1)
cgiが動作して、警告どおりの意味のエラーを表示しています。 そこでは、データ入出力というこのソフトウェアの基本「システム」 のエラーを次のように調べます。
1 shadowのデータファイルへのパス(path) と/あるいは/ か 2 パーミッション
こちらでは、パーミッションの確認ができませんのではるかさんで みてください。次はパスですが、ディレクトリ構成に忠実な道筋に なっていますでしょうか。html直下に/shadow/ディレクトリを挿入 しています。通常は、ローカルサーバで動作検証ができるのですが hi-hoとは違うために、考えの提供にすぎません。hi-hoの制限事項 をはるかさんのほうでも確認してください。
<http://home.hi-ho.ne.jp/support/manual/web/restrictions.html> その7 です。-------------------------------------引用 ファイルの書き込み、読み込みをCGIで行う場合には、 必ずお客様のホームディレクトリ(環境変数$ENV{'HOME'}) を基準にお書きください。 例) お客様のhtmlディレクトリ下のファイルにアクセスする場合 "$ENV{'HOME'}/html/...." (絶対パスでは指定できません。) ------------------------------------------------------------ 1 絶対パスでは指定できない (biglobeやniftyなどcgi許可の場合 このパスが使えます。セキュリティのために、この措置をしている と思われます。) 2 1の代わりに、環境変数でホームディレクトリの値を得ています。 3 もちろん相対パスやhttp://ではじまるURLによる記述もエラーになります。
そこで初期設定を、その7の通りに書き直してみました。 ------------------------------------- $dir = "$ENV{'HOME'}/html/shadow/temp"; $img_dir = "$ENV{'HOME'}/html/shadow/image"; $bgi_dir = "$ENV{'HOME'}/html/shadow/bgi"; $up_dir = "$ENV{'HOME'}/html/shadow/temp"; ----------------------------------- これで、ファイルの書き込み、読み込みの対象である 1 作業ファイル (データと添付画像ファイル) 2 画像ファイル 3 背景画像ファイル に、環境変数で得たホームページを基準にして下のディレクトリ 構成図に忠実な初期設定になるとものと考えました。
-----------[16日20時37分]のディレクトリ構成を一部変更 ├ html( http://www.kit.hi-ho.ne.jp/s-saimoto/)・・このhtmlがホームディレクトリ |...│ |...├index.html(トップページ) |...├/shadow/ ・・◎これを新設(他のcgiを増設するとして) |.........├bgi/ |.........│ |.........├image/ |.........│ |.........└temp/ (777)・・・確認その1 |...........│ |...........└date.txt(拡張子cgiをtxtに変更)(666)・・その2 | └ cgi-bin( http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/) -----------------------------
以上です。 大切なお断り:上記変更に伴う不具合発生の責任はNXerには まったくありません。hi-hoにFAQなどがあればそちらも参考に してください。
参考サイト http://home.hi-ho.ne.jp/support/manual/web/restrictions.html http://dream.lib.net/room/sys/spbbs/spbbs.cgi?act=artsel&tree=1678&art=1010594625
□ はるか [2006年05月17日21時40分]> に、環境変数で得たホームページを基準にして下のディレクトリ > 構成図に忠実な初期設定になるとものと考えました。 > > -----------[16日20時37分]のディレクトリ構成を一部変更 > ├ html( > http://www.kit.hi-ho.ne.jp/s-saimoto/)・・このhtmlがホームディレクトリ > |...│ > |...├index.html(トップページ) > |...├/shadow/ ・・◎これを新設(他のcgiを増設するとして) > |.........├bgi/ > |.........│ > |.........├image/ > |.........│ > |.........└temp/ (777)・・・確認その1 > |...........│ > |...........└date.txt(拡張子cgiをtxtに変更)(666)・・その2 > | > └ cgi-bin( > http://www.kit.hi-ho.ne.jp/cgi-bin/user/s-saimoto/) > ----------------------------- > > 参考サイト > http://home.hi-ho.ne.jp/support/manual/web/restrictions.html > http://dream.lib.net/room/sys/spbbs/spbbs.cgi?act=artsel&tree=1678&art=1010594625 いつもながらの速球実験感謝いたします。 そこで初期設定を、ご指摘の通りに書き直してみました。 $file = "$ENV{'HOME'}/html/shadow/temp/data.txt";★追加変更。変更しなくても同じでした。 ------------------------------------- $dir = "$ENV{'HOME'}/html/shadow/temp"; $img_dir = "$ENV{'HOME'}/html/shadow/image"; $bgi_dir = "$ENV{'HOME'}/html/shadow/bgi"; $up_dir = "$ENV{'HOME'}/html/shadow/temp"; ★ ----------------------------------- [16日20時37分]のディレクトリ構成を一部変更 ├ html |...│ |...├index.html(トップページ) |...├/shadow/ ・・★デレクトリーを新設して下記の三つを格納しました。 |.........├bgi/(777) |.........│ |.........├image/ (777) |.........│ |.........└temp/ (777)・★確認しました。 |...........│ |...........└date.txt(拡張子cgiをtxtに変更)(666)★変更しました・その2 | └ cgi-bin
現在cgiファイルは下記のようになっています(中間略しています。)
#--------------- 設定部ここから----------------------#
# マスターパスワード(管理用:このパスワードで全ての記事が削除できます) $master = "pass";
# このファイルの名前 $script = "shadow.cgi";
# 作業用ディレクトリ(最後に/を付けない) $dir = "$ENV{'HOME'}/html/shadow/temp";
# ★追加です。データ記録ファイル $file = "$ENV{'HOME'}/html/shadow/temp/data.txt";
# 画像設置ディレクトリ(http://からのURL形式でも可、最後に/を付けない) $img_dir = "$ENV{'HOME'}/html/shadow/image";
# 投稿時の背景画像指定機能(0:無効 1:有効) $bgi_mode = 1;
# 背景用画像設置ディレクトリ(http://からのURL形式でも可、最後に/を付けない) $bgi_dir = "$ENV{'HOME'}/html/shadow/bgi";
# 日本語コード変換ライブラリ require "./jcode.pl";
# ファイルのアップロード機能(0:無効 1:有効) $up_load = 1;
# 作業用ディレクトリをhttp://からのURL形式で記述(最後に/を付けない) $up_dir = "$ENV{'HOME'}/html/shadow/temp";
# アップロードを許可するファイルの拡張子(|で区切っていくつでも記述) $perm_files = "gif|jpg|jpeg|png|zip|lzh|exe|mid";
# アップロードできるファイルの上限サイズ(単位:bytes [1000bytes = 1kb]) $max_size = 50000;
# ファイルロック(0:OFF 1:ON) # 同時投稿などでデータ記録ファイル破損の恐れがある場合はONにする $lock_mode = 0; # 0 にしても記録ファイルには記録されます $agent_mode = 1; #------------------ 設定部ここまで ------------------------# 他にどんなことが考えられますか。
□ はるか [2006年05月18日07時07分]★少し訂正しました。
> $dir = "$ENV{'HOME'}/html/shadow/temp"; > $img_dir = "$ENV{'HOME'}/html/shadow/image"; > $bgi_dir = "$ENV{'HOME'}/html/shadow/bgi"; > $up_dir = "$ENV{'HOME'}/html/shadow/temp"; > $file = "$ENV{'HOME'}/html/shadow/temp/data.txt"; > ------------------------------------- $上記のうちURL形式でも可とあるところを、下記のようにURLに訂正し ましたら画像の一部が表示されるようになりましたが、 掲示板フォームがでてきません。 /temp/の位置を指定するパス"$ENV{'HOME'}/html/が悪いのでしょうか?
$img_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/image"; $bgi_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/bgi"; $up_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/temp";
□ NXer [2006年05月18日17時47分] >画像の一部が表示
http://から始まるURLで画像ファイルは、たしかに、次の2)のようにアクセス できます。NXerです。
--------------------------hi-ho から引用 アップロードファイル保存ディレクトリを http://www.○○.hi-ho.ne.jp/△△/upfile/ に作成した場合は以下のように設定します。
1)#アップロードファイル保存ディレクトリ $upfile_dir = "$ENV{'HOME'}/html/upfile/";
2)#アップロードファイル参照パス $upfile_url = 'http://www.○○.hi-ho.ne.jp/△△/upfile/'; ------------------------------------------------------------
問題はその1)です。
shadowの作業ファイルやアプロードディレクトリに相当するものです。 上の投稿のとおりしていただき、不具合がでたとのことですが hi-hoの説明が正しいとすると、cgiのスクリプト中でどのように 表現するのかという問題なのかもしれません。 hi-hoの形式は、正しい設定であるとしても、shadow.cgiでは 次の$dir変数をうまく処理できないと考えました。
-------------------------------------- 1215 if (! open(DATA,"$dir/$file")) ----------------------------------------
$dir/$fileが、cgiに認識されるパスになるように 当方のサーバーで次のテストをして見ました。 ------------------------------------------ $path = $ENV{'HOME'}; $dir1="../../../shadow/temp"; $dir=$path.$dir1; ---------------------------------------- さらに、ほぼ同じようなディレクトリ構成にしてこの代入式 をテストして見ました。
$dir="$ENV{'HOME'}/html/shadow/temp/"; ではエラーだったのに、愚案で投稿画面になりました。 他もついでに少し書き変えてテストしてみました。 ----------------------------------------- $img_dir = "$path/~xxx/shadow/image"; $up_dir = $path.$dir1; ----------------------------------------- 画像の添付も問題なし、別ウィンドウがポップアップして 表示もできます。temp内に画像ファイルが保存されています。
条件が違うことから、そのまま使えない恐れが十分ありますので 相変わらぬ、錬金術師のダ・メンチ・コードということでお笑いください。 hi-hoでのcgi設置例を検索して、より適切なスクリプトに改造 してください。
□ はるか [2006年05月19日08時17分]いつもすみません。hansinが駄目なときはshadowも調子がでません。 ご指摘いただいた分、下記★しるしのように訂正しましたが うまくいきません。 訂正方法がまちがっていますか、何しろパールと英数に疎い者なので・・・ よろしくです。 +++++++++++++++++++++++++++++++++++++++++++++++++ 18# 作業用ディレクトリ(最後に/を付けない)★ 19$path = $ENV{'HOME'}; 20$dir1="../../../shadow/temp"; 21$dir=$path.$dir1;
23# データ記録ファイル★ 24$file = "$ENV{'HOME'}shadow/temp/data.txt";
26# 画像設置ディレクトリ(http://からのURL形式でも可、最後に/を付けない)★ 27$img_dir = "$path/s-saimoto/shadow/image";
32# 背景用画像設置ディレクトリ(http://からのURL形式でも可、最後に/を付けない) 33$bgi_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/bgi";
59# 作業用ディレクトリをhttp://からのURL形式で記述(最後に/を付けない) 60$up_dir = http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/temp
> アップロードファイル保存ディレクトリを http://www.○○.hi-ho.ne.jp/△△/upfile/ > に作成した場合は以下のように設定します。 > > 1)#アップロードファイル保存ディレクトリ > $upfile_dir = "$ENV{'HOME'}/html/upfile/"; > > 2)#アップロードファイル参照パス > $upfile_url = 'http://www.○○.hi-ho.ne.jp/△△/upfile/'; > ------------------------------------------------------------ > > 問題はその1)です。 > > shadowの作業ファイルやアプロードディレクトリに相当するものです。 > 上の投稿のとおりしていただき、不具合がでたとのことですが > hi-hoの説明が正しいとすると、cgiのスクリプト中でどのように > 表現するのかという問題なのかもしれません。 > hi-hoの形式は、正しい設定であるとしても、shadow.cgiでは > 次の$dir変数をうまく処理できないと考えました。 > > -------------------------------------- > 1215 if (! open(DATA,"$dir/$file")) > ---------------------------------------- > > $dir/$fileが、cgiに認識されるパスになるように > 当方のサーバーで次のテストをして見ました。 > ------------------------------------------ > $path = $ENV{'HOME'}; > $dir1="../../../shadow/temp"; > $dir=$path.$dir1; > ---------------------------------------- > さらに、ほぼ同じようなディレクトリ構成にしてこの代入式 > をテストして見ました。 > > $dir="$ENV{'HOME'}/html/shadow/temp/"; > ではエラーだったのに、愚案で投稿画面になりました。 > 他もついでに少し書き変えてテストしてみました。 > ----------------------------------------- > $img_dir = "$path/~xxx/shadow/image"; > $up_dir = $path.$dir1; > ----------------------------------------- > 画像の添付も問題なし、別ウィンドウがポップアップして > 表示もできます。temp内に画像ファイルが保存されています。 > > 条件が違うことから、そのまま使えない恐れが十分ありますので > 相変わらぬ、錬金術師のダ・メンチ・コードということでお笑いください。 > hi-hoでのcgi設置例を検索して、より適切なスクリプトに改造 > してください。 >
□ NXer [2006年05月19日17時28分]おはようございます。NXerです。
そちらのcheck.cgiを使い、はるかさんのshadow.cgiを点検してみました。
結果:shadow.cgi Error ---------------------------------------------引用 syntax error at shadow.cgi line 66, near "http:" syntax error at shadow.cgi line 94, near "$title_bgcol = "gainsboro" Compilation failed in require at /00/0067/s-saimoto/cgi-bin/check.cgi line 46. --------------------------------------------------
>パールと英数 ばかりです。前置詞 at とか in の前で区切り日本語に置き換えただけです。 日本語は(.... (.... (..)))で 英語は at(((..)..)..)と日英の基礎文法は、ほぼ鏡状の構成になっています。 早い話、後ろから前に訳しただけです。 --------------------試訳 shadow.cgiの行66、"http:"付近で(at)文法エラー
■60$up_dir = http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/temp
多分この↑行です。↓引用記号の初めと終わりをつけ、セミコロンを最後に付けます。 □60$up_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/temp";
同じく94行目、多分色を変更されたのかもしれません。 ■ $title_bgcol = "gainsboro" □ $title_bgcol = "gainsboro";
最後の行です。 Compilation failed in require at /00/0067/s-saimoto/cgi-bin/check.cgi line 46.
/00/0067/s-saimoto/cgi-bin/check.cgi の行 46にて perlライブラリ使用 要求(require)でコンパイルに失敗しました。
------------------------------- # 日本語コード変換ライブラリ require "./jcode.pl"; ------------------------------まだ46行で停止中。
このエラーは、当方のローカルサーバーでは出ていません。 この相対パスも変更する必要があるかもしれません。
それから、スクリプトが実行されると次の行も問題がでるかもしれません。 ■24$file = "$ENV{'HOME'}shadow/temp/data.txt"; # データ記録ファイル名なのでパスは不要と思います。 □$file = "data.txt";
check.cgiでは、記述ミスをチェックしてからコンパイルするようです。 そのため24は、文字列としてはエラーではない、と機械的に判断 しているようです。ということは、19,20,21でも実行時にはエラーの 原因になるかもしれません。
1 とりあえず、記述(文法)ミスを直す 2 画像参照関係は、もともとhttp://で始まる形式で問題なし であることから27行もその形式にもどす 27$img_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/image";
そして、起動後問題なく、投稿画面に入るようにスクリプト改造の目的を 単一化されてはいかがでしょうか。環境関数の使い方がかぎの用です。 ------------------------------------ 19$path = $ENV{'HOME'}; 20$dir1="../../../shadow/temp"; 21$dir=$path.$dir1; ---------------------------------------
cgiを実行し、エラーがでたらcheck.cgiを使い、エラーコードを解読して ください。こちらのダ・メンチ・コードは、検閲に引っかかることはあり ませんがスクリーンに投稿画面がでないという謎を秘めています。
□ はるか [2006年05月19日23時14分]ご親切な対応恐れ入ります、ご指示通りに設定しました、何やら 無限ルーブに陥っているようです。私のcheck.cgiでもまったく 同じエラーがでていましたが、今はシステムエラーで ビックリマークのエラー画像がでているところです。 ちょうどすえぽんさんのラウンジが暇の時でNXerさんと2ショットできて、 ありがたいことです。こうなったらのんびりいきますので 暇なときでかまいません。そのうち最後の手段サーバパスを送ります。 一応現在の設定状況です。
18 # 作業用ディレクトリ 19 $path = $ENV{'HOME'}; 20 $dir1="../../../shadow/temp"; 21 $dir=$path.$dir1;
23 # データ記録ファイル 24 $file = "data.txt";
26 # 画像設置ディレクトリ 27 $img_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/image";
32 # 背景用画像設置ディレクトリ 33 $bgi_dir = "http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/bgi";
35 # 日本語コード変換ライブラリ 36 require "./jcode.pl";
59 # 作業用ディレクトリ 60 $up_dir ="http://www.kit.hi-ho.ne.jp/s-saimoto/shadow/temp";
89 $title_bgcol = "gainsboro";
> 結果:shadow.cgi Error > syntax error at shadow.cgi line 66, near "http:" > syntax error at shadow.cgi line 94, near "$title_bgcol = "gainsboro" > Compilation failed in require at /00/0067/s-saimoto/cgi-bin/check.cgi line 46.
□ NXer [2006年05月21日22時15分]>私(はるかさん)のcheck.cgiで
当方がcheck.cgiでチェックした結果です。NXerです。
1 文法エラーはでていません。(ただし、見かけです。) 2 Set-Cookie:shadow=1148079437<>1148079536<>1<><><><><><><>; expires=Mon, 28-Aug-2006 07:58:56 GMT; Content-type:text/html というメッセージが出ています。 3 shadow.cgiのエラーメッセージが出ています。
3の画像が表示されていることから、画像の参照は、http://で始まるURLで 可能である。しかし、3のメッセージから $dir= に代入するパス指定が間違っている
2のクッキーですが、 71 # クッキーの有効期限(単位:日) 72 $cookie_term = 100; から、28-Aug-2006 が100日後と正し 249 &set_cookie("$Clast<>$Cnew<>$Cwrite<>$Cname<>$Cmail<>$Curl<>$Cpass<>$Ctxcol<>$Cbgcol<>$Cbgi"); この行のサブ・ルーチンで設定済み。
しかし、 320行 if (! open(DATA,"$dir/$file")) で、エラーメッセージ を返して終了しているようです。コンパイルは、今回失敗することなく なされています。
$dirをどのように初期設定するのか、これが鍵ですね。
320/1521行のコンパイル率。2割1分のコード解読率です。なんとか 3割にしたいですね。
一定時間書込が無かったので過去ログに移りました
|
|