、私は一時ファイルフォルダを割り当てるために、次のコードを実行する1台のマシンを除い:通常、CGI.pmは一時ファイルをどこに作成しますか?すべての私のWindowsサーバーの
use CGI;
my $tmpfile = new CGITempFile(1);
print "tmpfile='", $tmpfile->as_string(), "'\n";
変数は値'.\CGItemp1'
を割り当てられ、これは私が欲しいものです。しかし、私のサーバーの1台で、それは間違ってC:\temp\CGItemp1
に設定されています。
すべてのサーバーで、Windows 2003 Standard Edition、IIS6、およびActivePerl 5.8.8.822(Perlの後のバージョンにアップグレードするオプションはありません)が実行されています。コマンドラインまたはIISでCGIスクリプト(スクリプトマップ.pl
= c:\perl\bin\perl.exe "%s" %s
)としてスクリプトを実行すると、結果は常に同じになります。
このPerlのインストールをどのように修正し、デフォルトで '.\CGItemp1
'を返すことができますか?
私はPerlフォルダ全体をこのサーバにコピーしていますが、喜んではいません。
私は 'TMP
' と 'TEMP
の環境変数とも$ENV{TMP}
と$ENV{TEMP}
をチェックし、彼らは同じです。彼らは、たとえば、ユーザープロファイルディレクトリを指すコマンドラインから
:
レジストリキー:
C:\DOCUME~1\[USERNAME]\LOCALS~1\Temp\1
にCGIスクリプト彼らの両方の点としてIISの下で実行
c:\windows\temp
HKEY_USERS/.DEFAULT/Environment
で0
は、両方のサーバーがあります。CGITempFile()
のActiveStateの実装は明確にそれが一時的なフォルダを生成する方法を決定するための代替メカニズムを使用している
%USERPROFILE%\Local Settings\Temp
。
本当の問題はCGI.pm
モジュールと添付ファイルの処理です。ファイルがサイトにアップロードされるたびに、CGI.pm
は一時的にそれをどこかに格納する必要があります。これを行うには、がCGI.pm
の中で呼び出され、一時フォルダが割り当てられます。残念ながらFile::Temp
は使用できません。とにかくありがとう。束を助けた
。先にCGI.pm
ソースを使って簡単にスキャンしましたが、あなたの提案は元のアルゴリズムを理解するためにもっと慎重に見直してくれました。私は問題なく動作しますが、奇妙なことはもともとサーバ上にc:\temp
というフォルダがなかったことです。
私はc:\temp
フォルダを作成し、ウェブサイトの匿名ユーザーアカウントに関連する権限を設定し、一時的な修正プログラムを入手するには。しかし、これは共有されたボックスなので、一時ファイルが削除されているにもかかわらず、私はそのように物事を残すことができませんでした。短いストーリーを短縮するために、c:\temp
フォルダの名前を別のものに変更し、正しい '.\
'フォルダパスが返されていたのを魔法のように覚えています。また、顧客がWebサイトのFrontPage拡張機能を有効にしていて、Webサイトフォルダの匿名ユーザーアカウントの書き込みアクセス権が削除されたため、このアクセス許可を再度適用する必要があることに気付きました。私はまだこの問題の冒頭でが、そのフォルダが存在しなかったのに、なぜ魔法のように再び働き始めたとしても、c:\temp
を返していたのはなぜか分かりません。あなたは、このスクリプトを実行している場合