autorizzazione negata

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
salve a tutti. sempre io e sempre con fso...
ho uno script che crea un file di log. quando questo è composto da 100 righe, lo archivia. si...magari!!!
Dim file ' il file sotto 'processo'
Dim folder ' la directory corrente
Dim fso ' file system object
Dim counter ' contatore dei file
Dim newName ' nuovo nome da assegnare al file
file="log.txt"
Set fso=CreateObject("Scripting.FileSystemObject")
Set folder=fso.GetFolder(".")
' azzero il contatore
counter = 0
' scorro tutti i file corrispondenti
For Each file in folder.Files
' ciclo per il controllo degli errori
Do While True
' incremento il contatore di file trovati
counter = counter + 1
' creo il nuovo nome
newName = "log" & counter & "." & txt
' verifico che il file non ci sia gia'
If Not fso.FileExists( newName ) Then
' Ok, rinomino
fso.MoveFile "c:\inetpub\wwwroot\log.txt", newName
Exit Do
End If
Loop
Next
esegue tutto il codice, ma non mi rinomina un bel niente. mi da autorizzazione negata. tempo fa, avevo notato che se creavo un file e lo copiavo nella directory del web, mi dava lo stesso errore mentre se il file era creato direttamente li (salvato li) non avevo problemi. come posso risolvere?
grazie a tutti
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
svista tremenda...
ho corretto ma non ho risolto il problema. continuo ad avere "autorizzazione negata" alla linea 109
riporto la riga in questione:
fso.movefile("txt.log"), newName
ho però continuato a modificare il codice, e sono giunto alla soluzione. quando creo il nome del nuovo file, aggiungo il percorso intero (avevo dimenticato di specificare la cartella dove voglio archiviare i log) e lo script funziona senza problemi.
ma perchè non posso modificare i file presenti nella cartella principale?
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
si, e ho riverificato. c'è ancora una cosa ma non so se puo essere utile. uso frontpage e quando provo a pubblicare il web, mi dice che non posso scrivere sulla cartella specificata.
mi confermi che per i permessi di lettura\scrittura, devo andare nel pannello di controllo di iis, selezionare la cartella interessata e modificare le proprietà del menu a tendina?
gli utenti che ho creato, hanno tutti le stesse proprietà e tutti posso leggere e scrivere.
grazie e buona giornata!
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
al di la di fp non ho capito quale procedura hai fatto su iis, ma puoi impostare i permessi anche da tasto destro / proprietà sulla cartella, condivisione web e assegnazione di permessi in lettura, che dovrebbe già essere selezionato, ed in scrittura

fammi sapere
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
idem...anche li, i permessi di scrittura sono attribuiti a tutti gli user tranne che a creator owner. ma il fatto che io acceda come admin, mi lascia immaginare che non cambi molto.
inoltre, sebbene abbia provato a cambiare gli attributi su creator, non ci sono riuscito.
 

Dusy

Utente Attivo
8 Nov 2005
488
0
0
Germania - Deutschland
A naso mi puzza un pochetto
la funzione
fso.MoveFile "c:\inetpub\wwwroot\log.txt"...

se la fai girare su un IIS il percorso non dovrebbe essere relaziovo, o sbaglio?
Io inizierei col togliere c:\inetpub\...
ripeto, magari mi sbaglio... :eek:
 

PoLe

MRW Moderator
6 Giu 2005
2.198
3
0
40
.: Venezia :.
www.bzconsulting.it
Dusy ha scritto:
A naso mi puzza un pochetto
la funzione
fso.MoveFile "c:\inetpub\wwwroot\log.txt"...

se la fai girare su un IIS il percorso non dovrebbe essere relaziovo, o sbaglio?
Io inizierei col togliere c:\inetpub\...
ripeto, magari mi sbaglio... :eek:

In locale è necessario il Path assoluto. ;)

Davide, secondo me l'errore sta in questa riga:
fso.MoveFile "c:\inetpub\wwwroot\log.txt", newName

Prova ad aggiungere il Path assoluto anche a NewName, dovrebbe funzionare (spero :D )!
fso.MoveFile "c:\inetpub\wwwroot\log.txt", "c:\inetpub\wwwroot\" & newName


X DUSY:
[OT = Wenn es nicht spongebob ist, das ist Dusy?]
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
bene, intanto spiego la mia esigenza sperando di essere breve e chiaro.
ho un file di testo (db.txt) che viene aggiornato ogni volta che viene compiuta una operazione.
ho poi creato un file di log che memorizza tutte le operazioni compiute sul file di log (log.txt).
per una consultazione rapida, avevo pensato di archiviare il file di log qualora la sua lunghezza fosse di 100 righe.
premesso che sto provando a risolvere il problema e che spesso apporto delle modifiche al codice, il codice attuale, è il seguente:
'apro il file di log in lettura

dim objFSO
dim objScriviLog
dim objLeggiLog
set objFSO = Server.CreateObject("Scripting.FileSystemObject")
set objLeggiLog = objFSO.OpenTextFile(Server.MapPath("log.txt"),1, False)

'leggo l'intero file per conoscere il numero di righe che lo compone
esci=objLeggiLog.AtEndOfStream
do until objLeggiLog.AtEndOfStream
Linea = objLeggiLog.ReadLine()
if (Linea <> "") then
response.write("Conteggio righe in corso...")
else
n_riga=objLeggiLog.Line
end if
loop
if ((n_riga-5)=>99) then
objLeggiLog.close


Dim fso ' file system object
Dim counter ' contatore dei file
Dim newName ' nuovo nome da assegnare al file
Set fso=CreateObject("Scripting.FileSystemObject")
set folder=fso.GetFolder(Server.MapPath("\archivio_log\"))

'azzero il contatore
counter = 1
newName = "c:\inetpub\wwwroot\archivio_log\log" & counter & ".txt"

'specifico la condizione che fa uscire dal ciclo
do until (fso.FileExists(newName))

'incremento il contatore e creo il nuovo nome
counter = counter + 1
newName = "c:\inetpub\wwwroot\archivio_log\log" & counter & ".txt"

'quindi rinomino

fso.CopyFile (Server.MapPath("log.txt")), newName
fso.CopyFile (Server.MapPath("\archivio_log\Originali\log_v1_0.txt")), (Server.MapPath("log.txt"))
Exit Do

Loop

end if

Set fs = nothing

'riapro il file log in lettura e quello temporaneo in scrittura
set objLeggiLog = objFSO.OpenTextFile(Server.MapPath("log.txt"),1, False)
set objScriviLog = objFSO.OpenTextFile(Server.MapPath("log1.txt"),8,True)


finchè nella cartella "archivio_log" non esistono file, il file di log che supera 99 righe, viene archiviato. ma se nella cartella esiste gia un file chiamato log1.txt, l'archiviazione non avviene e il file di log continua ad essere aggiornato superando quindi le 99 righe.
per quanto riguarda il percorso relativo ed assoluto, non credo crei problemi. ho provato con i due e non cambia nulla :(

grazie a tutti per l'aiuto!!
p.s.: di sicuro, troverete il codice un'obrobrio...accetto volentieri consigli per poterlo snellire e/o migliorare :)
ciauz!
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
-.-
ho riletto e trovato dei piccoli errori....
....ho poi creato un file di log che memorizza tutte le operazioni compiute sul file db (log.txt).
inoltre le ultime righe del codice, fanno parte di qualcosa (strano ma vero!) che funziona:
'riapro il file log in lettura e quello temporaneo in scrittura
set objLeggiLog = objFSO.OpenTextFile(Server.MapPath("log.txt"),1, False)
set objScriviLog = objFSO.OpenTextFile(Server.MapPath("log1.txt"),8,T rue)
 

Dusy

Utente Attivo
8 Nov 2005
488
0
0
Germania - Deutschland
PoLe ha scritto:
In locale è necessario il Path assoluto. ;)
X DUSY:
[OT = Wenn es nicht spongebob ist, das ist Dusy?]

Ma non c'è SpongeBob in Italia?
Perchè qui la sigla inizia come nella mia firma...
fanno vedere tante imitazioni di SpongeBob e
iniziano a dire...questo non è SpongeBob perchè
ha i pantaloni triangolari..questo non è SpongeBob
perchè ha i pantaloni poliedrici...
e così avanti...
scusate la stupidità ma a me fa morire dal ridere...
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
:tifoso: aiutoooooooooo
raga, vi prego di aiutarmi....sto proando a fare modifiche su modifiche ma senza cavarne un ragno dal buco :(
e non ditemi che il ragno devo lasciarlo li dov'è!!!!
io intanto....:book:
a presto!!!
 

daddy lee

Utente Attivo
1 Ott 2005
37
0
0
mi nonno diceva:<La vita è questione di c..o: o ce l'hai, oppure te lo fanno>.
non so perchè, ma il seguente codice, sembra funzionare alla perfezione!!!
'apro il file di log in lettura

dim objFSO
dim objScriviLog
dim objLeggiLog
set objFSO = Server.CreateObject("Scripting.FileSystemObject")
set objLeggiLog = objFSO.OpenTextFile(Server.MapPath("log.txt"),1, False)

'leggo l'intero file per conoscere il numero di righe che lo compone
esci=objLeggiLog.AtEndOfStream
do until objLeggiLog.AtEndOfStream
Linea = objLeggiLog.ReadLine()
if (Linea <> "") then
response.write("Conteggio righe in corso...")
else
n_riga=objLeggiLog.Line
end if
loop
if ((n_riga-5)=>99) then
objLeggiLog.close


Dim fso ' file system object
Dim counter ' contatore dei file
Dim newName ' nuovo nome da assegnare al file
Set fso=CreateObject("Scripting.FileSystemObject")
set folder=fso.GetFolder(Server.MapPath("\archivio_log\"))

'azzero il contatore
counter = 1
newName = "c:\inetpub\wwwroot\archivio_log\log" & counter & ".txt"

'specifico la condizione che fa uscire dal ciclo
do while (fso.FileExists(newName))

'incremento il contatore e creo il nuovo nome
counter = counter + 1
newName = "c:\inetpub\wwwroot\archivio_log\log" & counter & ".txt"

Loop

'quindi rinomino

fso.CopyFile (Server.MapPath("log.txt")), newName
fso.CopyFile (Server.MapPath("\archivio_log\Originali\log_v1_0.txt")), (Server.MapPath("log.txt"))

end if

Set fs = nothing

se però avete suggerimenti da darmi, saranno come al solito ben accetti!
grazie ancora e ciauz!!
 

Discussioni simili