OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

自分はオープンできない?

  • 暇なときにでも
  • 質問No.170150
  • 閲覧数55
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 77% (530/685)

実行中のスクリプトファイルが自分自身をオープンするのは、読み込みですらムリなのでしょうか?

open(F, $ENV{'SCRIPT_NAME'});
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 53% (52/98)

CGI 以外の環境では、SCRIPT_NAME って環境変数はふつう設定されていないので。 CGI のことだと仮定します。 自分自身を読み込んで表示させることは可能です。 が、例示されている方法では、通常は出来ないと思います。 open(F, "スクリプトの名前"); のように、直接名前を指定すれば可能だと思います。 $ENV{'SCRIPT_NAME� ...続きを読む
CGI 以外の環境では、SCRIPT_NAME って環境変数はふつう設定されていないので。
CGI のことだと仮定します。

自分自身を読み込んで表示させることは可能です。
が、例示されている方法では、通常は出来ないと思います。
open(F, "スクリプトの名前"); のように、直接名前を指定すれば可能だと思います。

$ENV{'SCRIPT_NAME'} が問題です。
この中には、「クライアントからWebサーバにアクセスする場合のファイルの位置」が入っています。 スクリプト自身のURL から"http://ホスト名" を除いた形式です。
ところが、普通Web サーバではさまざまな事情から、SCRIPT_NAME で表される場所とは違う場所に実際のファイルを置いています。
CGI が実行される環境(perlスクリプトの実行環境)では、ファイルの位置指定は実際のファイル位置で指定しなければならないので、SCRIPT_NAME で表される場所ではそのファイルを読み込めない訳です。
$ENV{'SCRIPT_NAME'} の代わりに $0 を使えば読めるかもしれません。
(システムによっては$0も使えない可能性はあるけど)

print して何が入っているか確認すれば、見当がつくかもしれません。

しかし、自分自身を何に使うのでしょうか?
自分自身を読み込むことにあまり意味があるとは思えないのですが...。
余計なお世話かも知れませんが、自分の書き換えをするつもりとかだったら、少なくとも公開されているサーバでは止めた方が無難です。
ひょんなことでセキュティホールになりかねないですし...。
お礼コメント
haporun

お礼率 77% (530/685)

回答ありがとうございます。
SCRIPT_FILENAMEを参照すると、ローカルファイルアドレスが得られるようです。
開くことができました。

用途はというと、掲示板のソースをそのまま公開するというわけです。
もちろん、ソースディレクトリやパスワードを公開しては困るので、その行は適当に置き換えてから出力しますが。

でわでは。
投稿日時 - 2001-11-19 09:14:25


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ