unlinkで削除されない理由とは?

このQ&Aのポイント
  • Windows2000、IIS、ActivePerl 5.6.1.638で動作させている場合、CGI内でunlinkを使ってファイルを削除できない問題が発生しています。
  • hogehoge.txtはCGI内で生成されるファイルであり、手動で削除しようとすると共有違反が発生します。
  • World Wide Web Publishing Serviceを停止することで、手動で削除できるようになります。
回答を見る
  • ベストアンサー

unlinkで削除されないのは?

質問させてください。 Windows2000、IIS、ActivePerl 5.6.1.638で動作させているのですが、 CGI内でunlinkを使ってファイルを削除できません。 ------------- unlink('hogehoge.txt'); ------------- みたいに書いています。 ちなみにhogehoge.txtは同CGIの中で生成しているものです。 エクスプローラーから手動で削除しようとすると共有違反になります。 World Wide Web Publishing Serviceを停止すると、手動で削除できるようになります。 どうぞご教授お願いします。

noname#22592
noname#22592
  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • t140
  • ベストアンサー率39% (59/150)
回答No.1

フルパスで指定してみてはどうでしょう? また、$! 変数にメッセージがセットされていませんか? unlink('hogehoge.txt') or print <<EOT; Content-type: text/html <H3>$!</H3> EOT

noname#22592
質問者

お礼

お返事ありがとうございます。 $!の内容は、 Permission denied でした。 権限がないことが原因のようですが、 どうすれば解決できるか教えていただけないでしょうか。

関連するQ&A

  • ファイルの削除について ( unlink )

    perl プログラミング 2日目の初心者です。 以下のようなスクリプトを書いて test.cgi とかで $del_count = unlink glob("msg-*.txt"); 保存し、ブラウザーでアクセスすると、ちゃんと ファイルが削除されるのですが、 シェル上で実行すると、以下のようなメッセージ glob failed (child exited with status 1) at test.cgi line 5. とか出て削除ができないのです。 パーミッションも 755 とかで試したのですが、 どうしてなのでしょうか・・・うんうん煮詰まって います。

    • ベストアンサー
    • CGI
  • IISのサービス停止とWebサーバとしてのサービス停止は一致していますか?

    net stop "World Wide Web Publishing Service" のERRORLEVELが0に返ってきたことによって IISの停止は正常に完了したと判断して良いでしょうか?

  • IIS msabcフォルダが削除できない

    IISのセキュリティ対策としてC:\Program Files\Common files\System\msadc フォルダ以下を 削除しようとしているのですが、以下のようなエラーがでて削除できません。 msadcを削除できません。共有違反がありました。 送り側または受け側のファイルが使用中の可能性があります。 なんとかできないものでしょうか? ちなみにIISを停止した状態でも同様の現象です。 強制削除はないのでしょうか?

  • Symantec Endpoint Protection Manageroインストールについて

    教えて下さい。まったくの初心者です。 Symantec Endpoint Protection Manageroインストールしようとしているのですが、次のメッセージが表示され先に進めません。これは何をどのように確認すればいいのでしょうか? (メッセージ内容) インストール続行にはIIS(Internet Information Services)のISAPI拡張(IIS管理)とW3SVC(world wide web publishing)がインストール済みで動作している事を確認してください。IIS7.5以降を実行するコンピュータ上に次のIISロールサービスもインストールする必要があります。ASP.NET.CGI IIS6.0管理互換。

  • imgタグのクエリストリングを取得する方法

    IIS + クラシック asp + ActivePerl 環境下で QR コードを取得するプログラムを作っています。 呼び出し元の asp 内に、 <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> と書きました。 この q=hogehoge を呼び出し先で取得する方法を教えてください。 ===== 呼び出し元 (qr_test.asp) <html> <head></head> <body> <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> </body> </html> ===== 呼び出し先 (qr_test.cgi) use strict; use warnings; use GD::Barcode; my $url = $in{'q'}; # ここでエラーが出ます。コメントアウトすると正常に動きます。 my $qrimg = GD::Barcode->new('QRcode',$url,{'Ecc'=>'M',Version=>'7','ModuleSize'=>'4'}); binmode(STDOUT); print "Content-Type: image/jpeg\n\n"; print $qrimg->plot->jpeg; exit(0); ===== バージョンは IIS 7.5 Perl 5.14.2 (64bit) です。 どなたかご教授お願いします。

    • ベストアンサー
    • Perl
  • ブラウザが起動しなくなりました。

    初めて質問させて頂きます。 PC(Win2000Server)がTROJ_NETHIEFというウイルスに感染してしまいました。トレンドマイクロの削除方法通りに駆除方法を実行し、【abcde.dll】という感染ファイルを削除しました。すると、Win2000Serverの[World Wide Web Publishing Service]というサービスが起動しなくなってしまい、ブラウザでページを閲覧できなくなってしまいました。IISを動かしているため、このようなことが起こっているのですが、復旧方法をお教え下さい。 サービスを開始した際のエラーは下記になります。 「エラー126:指定されたモジュールが見つかりません」 Windowsの修復処理をしたのですが、全く状況がかわりませんでした。 宜しくお願い致します。

  • Windows2000ServerでTOMCATの起動が確認できない

    Windows2000ServerにTOMCAT5.028をインストールしました。 その際、HTTP1.1 Connecor Portは80としました。 (デフォルトの8080は他で使用予定のため。) J2SDKには1.4.2_10を使用しています。このマシンには、これ以外にはJAVA環境はありません。設定したパスも間違いありませんでした。 Tomcatを起動し(「サービス」で「開始」になっていることを確認)、http://localhost:80にアクセスすると、Tomcatのページではなく、「現在、ユーザ向けのドキュメントが設定されていません。・・・(っ中略)・・・工事中のページ   IIS5.0へようこそ ・・・」というページが表示されます。 IISが悪さをしていると思い、IIS Admin Service、World Wide Web Publishing、Service Simple Mail Transport Protocol(SMTP)という三つのサービスを停止したところ、今度は「サーバが見つかりません」というエラー画面になりました。 有効な手段が思いつかず、Googleで検索しても類似例が発見できず、非常に困っています。 どなたか、お知恵を貸してください。

  • 共有フォルダの削除(Windows Vista)

    こんにちは。 現在、OSはWindowsVistaを使っています。 家庭内のLANで、他のPCとフォルダを共有するために、 環境変数%Userprofile%で表されるフォルダ、(僕の環境ではC:\Users\keiというフォルダ) 共有フォルダにしました。 すると、それに含まれるサブフォルダやファイル全てに、共有マークがつきました。 それらのサブフォルダやファイルを削除しようとすると、添付しました画像のようなウィンドウが現れます。 そこで、「続行」ボタンをクリックすると、「削除中」というタイトルのウィンドウが現れるのですが、 そこで止まってしまします。 ずっと放っておくと、共有が解除されて削除できるようになる場合もあるのですが、 場合によって動作が変わります。 また、フォルダやファイルの右クリックメニューの「共有」から、「共有の停止」 を選択しても、%Userprofile%フォルダ自体が共有フォルダなので、共有を停止できないというメッセージが現れて、共有を停止できません。 こういった問題のせいで、%Userprofile%フォルダ以下にあるフォルダを削除できなくて困っています。 コマンドプロンプトのrdのようなコマンドを使えば、何とか削除できるのですが、それだと日本語で始まるフォルダやファイルを削除するのが面倒なので、エクスプローラで削除できる方法を探しています。 何かいい方法を御存じの方がいらっしゃれば、情報提供を御願したいと思います。 では、よろしくお願い致します。

  • フォルダの削除

    win2000でDドライブに作っていた複数(50個程度)のフォルダ名を変更していました。 ほとんどのフォルダは問題なく変更できたのですが、ひとつだけどうしても変更できません。(今日作った直近のフォルダです。) 削除することも出来ません。 『○○○(フォルダ名)を削除できません。共有違反がありました。送り側受け側のファイルは使用中の可能性があります。』と出ます。 ファイル名変更の時も同じようなメッセージが出ます。 ファイルもフォルダも、アプリケーションも開いていません。 エクスプローラで作業しています。 いったい何に問題があるのでしょうか? よろしくお願いします。

  • Newdriveの削除方法

    教えてください。 どういう経緯か忘れましたがウィンドウズ2000のパソコンのCドライブの下にNewdriveというドライブを作りました。するとその中にCドライブの中身がそっくりそのままエクスプローラで見えます。容量はもとと変わらないのですがNortonのウィルスチェックをするとNewDrive¥NewDrive¥NewDriveとどんどん下の階層までチェックしてなかなか終わりません。400万ファイル以上チェックします。削除しようとすると「Confid.logを削除できません。共有違反がありました。」となり削除できません。どうしたら削除できるでしょう?

専門家に質問してみよう