use CGI;
my $tmpfile = new CGITempFile(1);
print "tmpfile='", $tmpfile->as_string(), "'\n";
değişken $tmpfile
değerini '.\CGItemp1'
atanır ve bu benim istediğim şey. Ancak, sunuculardan birinde hatalı olarak C:\temp\CGItemp1
olarak ayarlandı.
Tüm sunucular Windows 2003 Standard Edition, IIS6 ve ActivePerl 5.8.8.822 (sonraki bir sürümde değil, Perl sürümüne yükseltme) çalıştırıyor. Komut satırında veya CGI komut dosyası olarak IIS'de bir komut dosyası çalıştırıldığında sonuç her zaman aynıdır (burada scriptmap .pl
= c:\perl\bin\perl.exe "%s" %s
).
Bu Perl yüklemesini nasıl düzeltebilirim ve varsayılan olarak '.\CGItemp1
' dönmek üzere zorlayabilirim?
Tüm Perl klasörünü çalışan sunuculardan birinden bu makineye kopyaladım, ancak sevinç yok.
Ben 'TMP
' ve '
TEMP
' ortam değişkenleri ve ayrıca
$ENV{TMP}
ve
$ENV{TEMP}
kontrol ve onlar aynılar.
Komut satırından
onlar örneğin, kullanıcı profili dizinine işaret:
kayıt tuşu: CGI komut ikisi de nokta olarak IIS altında çalışacak
C:\DOCUME~1\[USERNAME]\LOCALS~1\Temp\1
c:\windows\temp
HKEY_USERS/.DEFAULT/Environment
yılında 0
, her iki sunucular vardır: CGITempFile()
ait ActiveState uygulaması açıkça geçici klasör oluşturmak gerektiğinin belirlenmesi için alternatif bir mekanizma kullanıyor
%USERPROFILE%\Local Settings\Temp
.
gerçek bir sorun CGI.pm
modülü ve ek işleme ile. Bir dosya siteye yüklendiğinde, CGI.pm
siteye geçici bir yerde depolanması gerekir. Bunu yapmak için CGITempFile()
, geçici bir klasör ayırmak üzere CGI.pm
içinde çağrılır. Maalesef File::Temp
kullanamıyorum. Yine de teşekkürler. bir demet yardımcı
CGI.pm
kaynağından hızlı bir tarama yaptım, ancak öneriniz geri dönmemi ve altta yatan algoritmayı anlamak için daha çok çalışmamı sağladı. İşlerim var, ama en garip şey, sunucuda aslen
c:\temp
klasörünün olmamasıydı.
Geçici bir düzeltme elde etmek için bir c:\temp
klasörü oluşturdum ve web sitesinin anonim kullanıcı hesabı için ilgili izinleri ayarladım. Ama bu paylaşılan bir kutu olduğu için, geçici dosyalar silinmiş olsa bile, işleri bu şekilde bırakamadım. Kısa bir hikayeyi kısaltmak için, c:\temp
klasörünü farklı bir şeye dönüştürdüm ve sihirli bir şekilde doğru '.\
' klasör yolu döndürülüyordu. Ayrıca, müşterinin site üzerindeki FrontPage uzantılarını etkinleştirdiğini fark ettim, bu da web sitesi klasörlerindeki anonim kullanıcı hesabına yazma erişimini kaldırarak, bu izinlerin yeniden uygulanması gerekiyordu. Bu sorunun başlangıcında neden CGITempFile()
'un c:\temp
döndürdüğünü, bu klasörün bulunmamasına ve neden yeniden sihirli olarak çalışmaya başladığına dair bir kayıp yaşıyorum.