PDA

View Full Version : [PHP] Contatore accessi. In locale funziona, in remoto no


VegetaSSJ5
20-05-2006, 11:07
Salve a tutti. Ho fatto un semplicissimo e rudimentale contatore di accessi in php, l'ho testato in locale e sembra funzionare bene. Quindi ho effettuato l'upload via ftp del mio sito locale sul server remoto. Però accedendo alla pagina dove si trova il contatore, il numerino non viene mai aggiornato e rimane sempre lo stesso anche aggiornando la pagina. Come mai? :what:error_reporting(2047);

#going to update last users counter script since
#aborting a write because a file is locked is not correct.

$counter_file = 'mdb-database/counter.txt';
clearstatcache();
ignore_user_abort(true); ## prevent refresh from aborting file operations and hosing file
if (file_exists($counter_file)) {
$fh = fopen($counter_file, 'r+');
while(1) {
if (flock($fh, LOCK_EX)) {
#$buffer = chop(fgets($fh, 2));
$buffer = chop(fread($fh, filesize($counter_file)));
$buffer++;
rewind($fh);
fwrite($fh, $buffer);
fflush($fh);
ftruncate($fh, ftell($fh));
flock($fh, LOCK_UN);
break;
}
}
}
else {
$fh = fopen($counter_file, 'w+');
fwrite($fh, "1");
$buffer="1";
}
fclose($fh);

print "Count is $buffer";

PhantomX
20-05-2006, 12:07
forse perchè quanto la pagina tenta di aggiornare il file non dispone delle autorizzazioni necessarie per modificarlo

VegetaSSJ5
20-05-2006, 13:10
forse perchè quanto la pagina tenta di aggiornare il file non dispone delle autorizzazioni necessarie per modificarlo
in effetti controllando i permessi sul file mi dice Proprietario->lettura,scrittura -- gruppo->solo lettura -- altri->solo lettura. ho provato a fare un chmod spuntando le voci relative alla scrttura anche per gruppo e altri e sembra che vada a buon fine, però in effetti non cambia nulla perchè tornando a vedere i permessi non è cambiato nulla. penso che il sito è hostato su windows. come client ftp uso gftp. si può fare qualcosa?

Xalexalex
20-05-2006, 18:43
in effetti controllando i permessi sul file mi dice Proprietario->lettura,scrittura -- gruppo->solo lettura -- altri->solo lettura. ho provato a fare un chmod spuntando le voci relative alla scrttura anche per gruppo e altri e sembra che vada a buon fine, però in effetti non cambia nulla perchè tornando a vedere i permessi non è cambiato nulla. penso che il sito è hostato su windows. come client ftp uso gftp. si può fare qualcosa?
Usa (horribile dictu) Winzozz, apri iexplorer, e collegati al sito ftp. Tasto destro sul file, proprietà, e hai tutti i permessi da cambiabili. Se non sono cambiabili..tattacchi...

Fenomeno85
21-05-2006, 13:26
http://www.fenomeno85.altervista.org/pag.php?pag=contatore.php


~§~ Sempre E Solo Lei ~§~

VegetaSSJ5
21-05-2006, 19:54
grazie fenomeno85 ma il problema non è il codice php, che è corretto, ma è una questione di permessi sul file sul server che hosta il sito (aruba windows) e non li riesco a cambiare con il client ftp. per il momento mi sono affidato ad un contatore esterno...

PhantomX
21-05-2006, 20:33
invece di usare un file di testo non hai la possibilità di usare un db?

VegetaSSJ5
21-05-2006, 20:42
invece di usare un file di testo non hai la possibilità di usare un db?
un db per contare gli accessi? capisco che è una soluzione, però è un po' come usare un cannone per uccidere una mosca... :sofico:

PhantomX
21-05-2006, 20:44
bhe dipende.. io lo uso così perchè oltre a contare gli accessi con le informazioni salvate nel db riesco a generare delle utili statistiche

Fenomeno85
21-05-2006, 20:45
un db per contare gli accessi? capisco che è una soluzione, però è un po' come usare un cannone per uccidere una mosca... :sofico:

concordo :D ... se poi devi solo vedere quante persone hanno fatto visita senza nessuna altra info un db è inutile :D

~§~ Sempre E Solo Lei ~§~

VegetaSSJ5
24-01-2008, 18:11
up! ;)

Xalexalex
24-01-2008, 18:31
up! ;)

Apperò... Uppone :D
Cmq io resto dell'idea che sia impossibile per problemi di permessi.
Se casualmente fossi su aruba e su hosting windows ti ricordo che l'unica cartella dove puoi scrivere è mdb-database.
Ciaps :D

vizzz
24-01-2008, 18:38
perchè non controlli il valore di ritorno della fopen? magari capisci meglio il problema.

VegetaSSJ5
24-01-2008, 19:46
Apperò... Uppone :D
Cmq io resto dell'idea che sia impossibile per problemi di permessi.
Se casualmente fossi su aruba e su hosting windows ti ricordo che l'unica cartella dove puoi scrivere è mdb-database.
Ciaps :D
ho provato a modificare i permessi del file counter.txt con un altro client ftp impostando la lettura/scrittura per tutti (chmod 6666). inoltre ho provato anche a metterlo nella stessa directory dello script php che esegue la funzione di contatore. nulla da fare. :(
perchè non controlli il valore di ritorno della fopen? magari capisci meglio il problema.
guarda ho provato ieri velocemente in 30 secondi e il browser rimane in attesa di una risposta dal server. secondo me qualche funzione php (al 99% la fopen) aspetta aspetta e poi dopo un po' va in timeout. non so il perchè però... :boh:

Xalexalex
24-01-2008, 19:48
ho provato a modificare i permessi del file counter.txt con un altro client ftp impostando la lettura/scrittura per tutti (chmod 6666). inoltre ho provato anche a metterlo nella stessa directory dello script php che esegue la funzione di contatore. nulla da fare. :(

guarda ho provato ieri velocemente in 30 secondi e il browser rimane in attesa di una risposta dal server. secondo me qualche funzione php (al 99% la fopen) aspetta aspetta e poi dopo un po' va in timeout. non so il perchè però... :boh:

Su che hosting sei in ogni caso? Piattaforma winz o lin?

VegetaSSJ5
24-01-2008, 19:57
Su che hosting sei in ogni caso? Piattaforma winz o lin?
grazie fenomeno85 ma il problema non è il codice php, che è corretto, ma è una questione di permessi sul file sul server che hosta il sito (aruba windows) e non li riesco a cambiare con il client ftp. per il momento mi sono affidato ad un contatore esterno...
;)

Xalexalex
24-01-2008, 20:00
Ma (ripeto perchè non ho capito :D), il file counter.txt è dentro a mdb-database o no? Le altre cartelle non sono scrivibili, nessuna...

VegetaSSJ5
24-01-2008, 20:15
Ma (ripeto perchè non ho capito :D), il file counter.txt è dentro a mdb-database o no? Le altre cartelle non sono scrivibili, nessuna...
ehm.... no! :stordita:

io non lo sapevo che solo quella cartella fosse scrivibile....

EDIT:
ho appena provato modificando lo script. nulla è cambiato...

Xalexalex
24-01-2008, 20:29
Aggiungi a inizio pagina
"error_reporting(2047);"
e dimmi se l'output cambia in qualche modo.. Perlomeno dovrebbe darti qualche info in più...

VegetaSSJ5
24-01-2008, 20:39
Aggiungi a inizio pagina
"error_reporting(2047);"
e dimmi se l'output cambia in qualche modo.. Perlomeno dovrebbe darti qualche info in più...
puoi vedere tu stesso...

http://www.arteimmagine.eu/counter.php

P.S.
ho modificato lo script php, ho aggiornato il primo post

Xalexalex
24-01-2008, 22:25
Prova, asdesso a rimodificare i permessi dal client FTP al file, ora che è in mdb-database. Poi-diciamo-mi arrendo :asd:

VegetaSSJ5
24-01-2008, 22:28
Prova, asdesso a rimodificare i permessi dal client FTP al file, ora che è in mdb-database. Poi-diciamo-mi arrendo :asd:
già fatto da prima, ho pure modificato i permessi al folder mdb-database... :boh:

Xalexalex
24-01-2008, 22:43
Momentaneamente mi arrendo. Ci dormo sopra, magari il supremo Dio dei programmatori mi svelerà la soluzione in sogno :asd:
Buona serata :D

VegetaSSJ5
24-01-2008, 22:44
Momentaneamente mi arrendo. Ci dormo sopra, magari il supremo Dio dei programmatori mi svelerà la soluzione in sogno :asd:
Buona serata :D
repne scasb ti appare in sogno?!? :eek:

amedeoviscido
25-01-2008, 09:17
Scusatemi se dico una stupidaggine, io PHP lo conosco poco. Ciò premesso, in fopen, se il file è già esistente, lo apri in modalità "r+".
Ora, "r" sta sicuramente per READ. Quindi ci dovresti poter solo leggere!!!
Poi, se quel "+" ti da la possibilità di scrivere, allora non contare questa risposta :) :) :)

Un'altra cosa che potresti fare è che se il file esiste, carichi il valore del contatore, cancelli il file, e lo ricrei con il dato aggiornato!

cionci
25-01-2008, 09:32
r+ permette anche di scrivere.

Ora comunque l'errore lo da: Warning: fopen(mdb-database/counter.txt): failed to open stream: Permission denied in D:\Inetpub\webs\arteimmagineeu\counter.php on line 12

VegetaSSJ5
25-01-2008, 11:44
ho inoltrato una richiesta di supporto all'help desk di aruba, vediamo un po' se almeno loro sanno come risolvere... :D
vi terrò aggiornati ;)

VegetaSSJ5
25-01-2008, 21:19
mi hanno contattato dall'help desk di aruba ed ora lo script funziona correttamente. era una questione di permessi non risolvibile "lato client", cioè da me... grazie comunque a tutti per le risposte ;)