サーバにアップされてあります
cgiファイルが消去できません。
消去しようとすると「権限がありません」のメッセージが
出ます。
どのようにしたら消去できますでしょうか。
教えてください、よろしくお願いいたします。

A 回答 (2件)

情報が少ないのでなんとも言えませんが、


CGIが作ったファイルが消せないという場合があります。

#!/usr/bin/perl

my $file = 'keshitai.cgi'; # 消したいファイル名

print "Content-type: text/html\n\n";
if (unlink $file) {
print "消せた";
} else {
print "消せない!";
}

↑$fileのところに消したいCGIの名前を書いて、
このCGIをアップロードした後、そこに行ってみて下さい。
ファイルを消せたら「消せた」と表示されます。
    • good
    • 0

これだけの情報では回答を得られないと思います。


サーバはどんなサーバですか?
サーバのOSは?
消去ってどうやってやろうとしていますか?

本当に権限がないならrootで消すしかないと思います。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QCGIへのアクセスが集中した場合にアクセスを一時的に制限したり、エラーメッセージを表示したり、予備のCGIに飛ばす方法。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。

できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサー...続きを読む

Aベストアンサー

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラムに、定期的にBサーバに通知させようと考えたわけですが、サンプルのようなものはどこかにあるのかもしれませんけど、見つけるのは大変でしょう。

いずれにしても、BサーバのCGIでAサーバの状態を取得し、その後AサーバのCGIを呼び出すのだとすると、今度はBサーバの負荷が高くなります。
負荷を軽減したり、サーバダウンした場合の対処方法として色々講じようとするのも良いのですが、あまり色々考えすぎると、返って別の部分で負荷が高くなったり、広げすぎて収拾がつかなくなったりするものです。
個々のCGIの処理を軽くするようにするなど、CGI側の工夫で回避できる部分は多いので、そちらがまず先かと思います。(余分な処理をさせない、より速いアルゴリズムを選ぶ、2度の処理に分けられるなら2つのCGIに分け2ステップで処理するetc)

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラ...続きを読む

QCGIの動かないサーバ

いつもお世話になっています。
携帯サイト内で使用するメールフォームを設置中です。フリーで配布されているものを使用させていただいていますが、以下のような問題点に突き当たり困っています。

テストサーバ上では動くが、実際のサーバ上では動かない(「Internal Server Error」と出てしまう)。

・sendmail、perlのパスは間違っていませんでした。
・パーミッションも合っています。
・サーバ会社に問い合わせたところ、OSにRedhatLinuxを使用しているので、テストサーバのOSが違ったらプログラムを直す必要あるかもと言われましたが、意味が分かりません。テストサーバのOSはLinux 2.4です。これってOSが違うというのでしょうか?RedhatLinuxというのは初めて聞いたので同じものなのか違うものなのかすら分かりません。

上記のような問題点があるのですが、
・携帯に対応しているフォームを使いたい
・入力項目は自分で増やしたり減らしたい
・サーバの都合でphpは使用できない
・デザインを他のページと揃えたい

というワガママな希望に応えるには私は何をしたら良いのでしょうか?
たぶん全てを叶えるのはムリなんだろうなと思っており、これをガマンすればできる、ということでも構いません。何かヒントになりそうなことがあれば教えて下さい。

CGIはサーバが用意しているものか、kent-webさんのような無料配布してくださっているものを使用したことしかありません。
知識不足で恐縮ですが、どうぞ宜しくお願いします。

いつもお世話になっています。
携帯サイト内で使用するメールフォームを設置中です。フリーで配布されているものを使用させていただいていますが、以下のような問題点に突き当たり困っています。

テストサーバ上では動くが、実際のサーバ上では動かない(「Internal Server Error」と出てしまう)。

・sendmail、perlのパスは間違っていませんでした。
・パーミッションも合っています。
・サーバ会社に問い合わせたところ、OSにRedhatLinuxを使用しているので、テストサーバのOSが違ったらプログラムを直...続きを読む

Aベストアンサー

>RedhatLinuxというのは初めて聞いたので同じものなのか違うものなのかすら分かりません。
今時RedhatLinuxを使っているかは疑問ですが
RedhatLinuxはLinuxディストリビューションの超大手の一つでした。
今はサーバ向け製品のRed Hat Enterprise Linuxを販売しています。
Linuxを使っていてRed Hatを知らないというのは日本に住んでいて
東京都が首都だと言うのを知らないレベルです。

>テストサーバのOSはLinux 2.4です。
カーネルのことですか?ディストリビューションのバージョンですか?
その場合、ディストリビューションはなにを使っていますか?

>テストサーバのOSが違ったらプログラムを直す必要あるかもと言われましたが、意味が分かりません。
可能性はあります。
特にCPANでインストールされている外部ライブラリを使っていた場合
それが使っている双方でインストールされているか確認したりなど

QアプリケーションサーバへのCGI設置

サーバーをリバースプロキシと
アプリケーションサーバに分けて
cgiの動的ページの生成などは
アプリケーションサーバにまかせると言う仕組みに
興味を持っているのですが
イマイチ仕組みが見えてきません。

あまりに初歩的な質問でしょうが
上記の様なサーバー構成の場合
CGIファイル自体はどちらのサーバーに置くのですか?

リバースプロキシに置いて
アプリケーションサーバーのCPUだけ借りるのですか?

アプリケーションサーバに置く場合
リバースプロキシに置いてあるHTMLでは
CGIの場所をどの様に指定するのでしょうか?

またCGIではHTMLの生成場所をどの様に指定
するのでしょうか?

分かる方がいらっしゃいましたら
よろしくお願い致します。

Aベストアンサー

ご質問の意図が理解できました。説明不足ですみません。
お知りになりたいのはmod_proxyとmod_rewriteの組み合わせによる動作のようですね。
mod_proxyは具体的に通信を各サーバーに振り分ける役割だと思ってください。
mod_rewriteはどのサーバーに具体的に振り分けるかを決定する役割を持っていると思ってください。(実は機能的には違うのですが,いただいたURLの説明を読むと,そのことで使用しているみたいなので・・・)

>>上記の様なサーバー構成の場合
>>CGIファイル自体はどちらのサーバーに置くのですか?
リバプロ側には極力負担をかけたくないので,このような構成の場合にはCGIなど重い処理が走るものはすべてアプリケーションサーバー側(気軽に台数を増減できる)におきます。

>>リバースプロキシに置いて
>>アプリケーションサーバーのCPUだけ借りるのですか?
そういえないこともありませんが,アプリケーションサーバー側でCGIを設置するのでそのCGIを動作させるPerlなどの言語もアプリケーションサーバー側で動作していますから,「CPUだけ借りる」という表現よりも「CGI部分の処理だけをアプリケーションサーバー側に行わせる」という表現のほうがより近いと思います。

>>アプリケーションサーバに置く場合
>>リバースプロキシに置いてあるHTMLでは
>>CGIの場所をどの様に指定するのでしょうか?
一台のサーバーにHTMLやCGIをおくのと同じ表現方法です。

>>またCGIではHTMLの生成場所をどの様に指定
>>するのでしょうか?
これも上記と同様,一台のサーバーにHTMLやCGIをおくのと同じ表現方法です。

わかりづらいので,上記2つのご質問を簡単に説明すると
www.testdomain.com
というドメインのドキュメントルートにindex.htmlがあるとします。
index.htmlには,ひとつの画像とひとつのCGIが指定されているとします。
この環境にはサーバーが2台あり,ひとつはmod_rewriteとmod_proxyを組み込んであるapacheが動作しておりこれを1号機とします。もうひとつはmod_perlが組み込んであるapacheが動作しているとし,これを2号機とします。
index.htmlとimgは前者,CGIは後者に保存されているとします。

クライアントが「http://www.testdomain.com/index.html」を呼び出すと,サーバーはとりあえずindex.htmlのテキスト文書をクライアントに返します。
受け取ったクライアントは,返却されたHTMLの中身を読み取り,とりあえず画像ファイルを読み出しに行きます。
index.htmlで画像ファイルを./img/test.pngなどと指定している場合には,リクエストは「http://www.testdomain.com/img/test.png」とリクエストされます。
このリクエストを受け取ったapacheはmod_rewriteに解析を依頼します。mod_rewriteの定義で/img/を含むURLがリクエストされた場合には,そのリクエストは1号機の方で処理するように指定がしてあると,1号機のimgフォルダにあるtest.pngを返却します。
また,クライアント側でユーザが,CGIを動作させるような操作をした場合リクエストは「http://www.testdomain.com/cgi-bin/test.cgi」などとなるわけですが,前者と同様mod_rewriteの定義で/cgi-bin/を含むURLがリクエストされた場合には,そのリクエストは今度は2号機の方で処理をするように指定がしてあると,そのリクエストは2号機のapacheに受け渡され,2号機のCGIコンテンツが処理を行い,リクエストを1号機のリバプロ経由でクライアントに返却します。

上記のように,クライアント側からは1台のサーバーで動作しているようにしか思えない,URLの仕方でも,実は2台のサーバーで処理を行うことが可能となります。

後は上記の応用だけなので,CGI専用やIMG専用,動画専用などのサーバーを立てておき,それぞれの処理を専用マシンに行わせるであるとか,が可能となります。

以上です。

ご質問の意図が理解できました。説明不足ですみません。
お知りになりたいのはmod_proxyとmod_rewriteの組み合わせによる動作のようですね。
mod_proxyは具体的に通信を各サーバーに振り分ける役割だと思ってください。
mod_rewriteはどのサーバーに具体的に振り分けるかを決定する役割を持っていると思ってください。(実は機能的には違うのですが,いただいたURLの説明を読むと,そのことで使用しているみたいなので・・・)

>>上記の様なサーバー構成の場合
>>CGIファイル自体はどちらのサーバーに置く...続きを読む

Q特定海外サーバでの、CGIエラー

日本でdownloadしたメールフォームが、ある特定の海外サーバで動きません。(Godaddyという会社です)perlのパスも、SSLのパスも、ちゃんと確認しました。本文にprint "Content-type: text/html; charset=Shift_JIS\n\n";も、付け加えて文字コードの設定もしてあります。permissionも何回も変えて確認しています。ほかのサーバでは、ちゃんと動いてくれます。なぜでしょう。もし、思いつく設定変更などありましたら、ご伝授いただけるとうれしいです。

Aベストアンサー

jcode.plが無いと言っています。
cgiファイルと同じ場所へjcode.plをアップロードすれば動くかと。

Q自宅サーバでCGIが機能しないのです

素人の質問で恐縮です。自宅サーバを構築中ですが、アパッチをインストールし、DDNSによるドメインを取得し、HPを公開できました。FTP環境もできました。ただ、ActivePerlの最新版ををインストールし、コマンドプロンプトで起動確認もできたのですが、CGIファイルをcgi-binフォルダに入れても機能しません。一行目を#!c:/perl/bin/perlか、#!c:/perl/bin/perl.exeにしたのですが、パールをつかみにいかないのです。サーバはWindowsXPのホームエディションSP2ですが、WindowsはUNIXみたいにパーミッションの概念がないので設定は不要だと、あるサイトに書いてましたが不要ですか?確かに以前、プロバイダのWEBスペースでCGIの掲示板を使っていた時は、FTP上でパーミッションを設定していましたが、自宅サーバ(windows)ではFTP上で設定しようとしてもはねつけられてしまいました。どなたかアドバイスいただけましたら幸いです。

Aベストアンサー

Apacheのhttpd.confの記述が間違ってるんだと思いますが、どのように設定されていますか?
特に<Directory>~</Directory>あたり。
参考にしたサイトがあればそこをもういちど確認されたほうがいいと思います。

自分はANHTTPDを使ってるのですが、こっちのほうが簡単だと思うなぁ。もともとunix系でサーバを扱ってる人ならApacheのほうが使いやすいかとは思いますが。

>一行目を#!c:/perl/bin/perlか、#!:/perl/bin/perl.exeにしたのですが

こんな記述の変更は不要です。


おすすめ情報