Newsgroup: it.comp.www.php
Titolo: problemi con un contatore, non va piu...

ecco un semplice script .  Su un server mi funziona mentre su un altro non
incrementa il conatore
ma rimanse sempre a 1.
E' un problema di permessi del file counter.txt ??? Ho controllato sui due
server il file counter.txt sembra avere
gli stessi permessi....  da che dipende ?
<?php
if (!file_exists("counter.txt")) {
$file=fopen("counter.txt","w");
$num=0;
}
else {
$file=fopen("counter.txt","r+");
$num=fgets($file,20);
fseek($file, 0);
}
$num++;
print("visite: ".$num);
fputs($file,$num);
fclose($file);
?>

 gli stessi permessi....  da che dipende ?
Se hai il safe mode abilitato sul server controlla che i due file abbiano lo
stesso proprietario.
Ludovico


guardando  tramite  phpinfo();   il safe-mode è settato su Off.    non
capisco perchè lo stesso identico
script su uno spazio web funziona mentre sull'altro no.
Quello dove non funziona safe-mode è a Off.  Il server è un Win NT.

 }
Non vedo "write", ma immagino sia un errore di trascrizione.
Poi, riguardo al "r+" (lettura e scrittura) tempo fa ho avuto dei
problemi; non ricordo esattamente, ma mi pare si comportasse in modo
strano.
A costo di usare codice superfluo, sceglierei una soluzione lievemente
diversa, con questa dovresti cavartela.
$dest="counter.txt";
if (!file_exists($dest)) {
$file=fopen($dest,"w");
$num=1;
fwrite($file,$num);
}
else {
$file=fopen($dest,"r");
$num=fgets($file,20);
fclose($file);
$file=fopen($dest,"w");
$num++;
fwrite($file,$num);
fclose($file);
}
print("visite: " . $num);
p. s. fseek non serve, è già contenuto in fopen "r" che sposta il
puntatore a 0.
Ciao :)
-- 
Nicoletta

grazie, ho provato  ma anche in questo caso non funziona.   Non riesce a
creare il file.txt oppure se c'è gia
il file non riesce a scriverci dentro.
Lo ho provato sullo spazio di un altro provider e funziona.
Sul server dove non funziona   c'è Php 4  su Win NT .  Safe-Mode è
disabilitato.
che cosa può essere ?
grazie
cj

 disabilitato.
Per me questo è arabo, mi spiace. 
Ciao
-- 
Nicoletta

 devi settarlo (mi pare) a 0777.
0666 = lettura e scrittura per chiunque (0777 è anche per l'esecuzione)

grazie a tutti ,
sapete dirmi  un nome di un client FTP che permette di modificare i permessi
anche server piattaforma Win NT / 2003 server ?
Quello che uso permette la modifica solo su serve in piattaforma Linux/Unix
grazie

anche a me è successo che fopen con mode r+ non mi funzionava su alcuni server.
prova questo codice
ciao
michel
<?php
if (!file_exists("counter.txt")) {
   $file=fopen("counter.txt","w");
   $num=1;
   fwrite($file,$num);
}
else {
   $file=fopen("counter.txt","r");
   $num=fread ($file,filesize("counter.txt");
   $num++;
   fclose($file);
   $file=fopen("counter.txt","w");
   fwrite($file,$num);
}
fclose($file);
print("visite: ".$num);
?>


perchè dipende dal server: sotto windows i permessi sono diversi, non
dovresti avere problemi per quello.
Prova con i metodi postati
Ludovico

grazie, ma non funziona nemeno questo su quel server...

 0666 = lettura e scrittura per chiunque (0777 è anche per l'esecuzione)
Grazie Ludovico. Ora però, siccome mi hai messo la pulce nell'orecchio,
sono andata a provare il contatoruzzo fornito ieri a CJ. Ebbene: se lo
introduco in una directory con chmod 777 funge, diversamente no: il
debugger sostiene che non ho i permessi per scrivere sul file. Sai per
caso come si spiega il fenomeno?
Il test l'ho effettuato in locale, su MacOsX, al cui interno (mi dicono)
c'è un server Unix.
Grazie :)
-- 
Nicoletta

> grazie, ma non funziona nemeno questo su quel server...
Metti l'error_reporting in modo da vedere qualsiasi errore, poi dicci cosa
hai trovato

 hai trovato
Il server dove risiede lo spazio in oggetto non è di mia proprietà , quindi
non posso effettuare modifiche.
Ho controllato tramite phpinfo() che Safe-mode è disabilitato.
A questo punto o hanno disabilitato la modifica dei files (si può fare?)
oppure i permessi della root directory
dello spazio non consentono la modifica o la creazione di files...
cj

 dello spazio non consentono la modifica o la creazione di files...
Controlla di avere anche i permessi in lettura (ed esecuzione) sulla
cartella che contiene il file.
cmq l'error_reporting puoi metterlo nel php
error_reporting(E_ALL);

 caso come si spiega il fenomeno?
La directory deve avere i permessi in esecuzione, al file bastano in
lettura+scrittura
Sorry, non avevo letto che parlavi della cartella che contiene il file =)
Ludovico

 > error_reporting(E_ALL);
non viene segnalato nulla .  Comunque si blocca qui l'esecuzione della
pagina PHP
<php?
$file=fopen("conta.txt","r+") or die ("non apro il file! ");
$num=fgets($file,20);
fseek($file, 0);
print $num;
?>
dopo la print  non viene piu processata nemmeno la restante parte di HTML .
Se si guarda la pagina creata
č troncata dopo la print, che risulta vuota.
per quanto riguarda i permessi sui file e directory se tento di cambiarli
con CHMOD ilserver mi dice che
non č supportata questa operazione remota...
quindi mi sembra non ci sia nulla da fare....

 Sorry, non avevo letto che parlavi della cartella che contiene il file =)
Ci mancherebbe. Per quanto le notizie che mi stai dando possano
trovarsi, chissà, magari nella prima pagina del manuale, io sono
dell'avviso che per assimilarle convenga parlarne. Poi di una svista, di
un errore nel leggere o nello scrivere... chissenefrega; è parlarne in
questo modo che fa piacere :)
-- 
Nicoletta

 quindi mi sembra non ci sia nulla da fare....
Prova a ripartire.
Crea una nuova cartella "contatorefolder" nella root.
Con un programma adatto (che per PC non so quale possa essere) assegna
il chmod 777 alla suddetta cartella.
Ovunque tu abbia collocato lo script, fai in modo che agisca all'interno
della cartella "contatorefolder" (se il codice si trova nell'index.php
della root, il path da usare sarà $dest="contatorefolder/counter.txt").
E lascia perdere "r+" che (se siamo in due a dirlo inizia ad essere
verosimile) può creare dei problemi non meglio identificati. Effettua il
test usando il mio script e/o quello di michel.
E' solo un tentativo, io non sono affatto esperta. Come vedi, mentre
rispondo a te imparo qualcosa anch'io :)
Ciao
-- 
Nicoletta

 0666 = lettura e scrittura per chiunque (0777 è anche per l'esecuzione)
Nei periodi in cui frequento il gruppo vengo presa dalla smania di
capire anche una marea di cose che probabilmente farei meglio a lasciar
perdere. D'altra parte ormai siamo in ballo, vediamo se col vostro aiuto
si riesce a ballare un po' meglio. Un pochino.
Spero di farmi capire pur usando una terminologia che (ne sono certa)
non sta né in cielo né in terra; d'altronde ho voglia di porvi alcune
domande, mi auguro di non destare irritazione.
Anzitutto.
Dopo numerosi tentativi, esperimenti a casaccio (che evito di narrare) e
lettura di vecchi post, credo di aver capito una cosa: creando un file o
directory col PHP, il proprietario di quel file è SOLO il PHP (per
semplicità, fra poco lo chiamerò signorPHP); lo si evince entrando sul
server via FTP e cercando di cambiare i permessi di quel file: è
un'operazione che non viene consentita.
Ditemi pure se ho visto giusto o meno, perché se la premessa è
sbagliata, è perfettamente inutile procedere con la lettura.
Dunque, l'idea che una cartella creata dal signorPHP sappia farsi
riconoscere, sappia farsi distinguere da una sua simile creata via FTP,
mi sta facendo sospettare che il signorPHP abbia un "potere" tutto suo.
La multi-domanda.
Visto con gli occhi di un server, chi è il signorPHP? E' un utente
particolare? Ha un nome particolare? Ha dei privilegi particolari?
Può, ad esempio, dopo aver creato una directory con mkdir() e averci
scritto dentro, essere in grado SOLO LUI di leggerne il contenuto e/o di
modificarlo? 
Non ci spero, ma sarebbe una buona soluzione per chiudere a chiavistello
dei dati.
Lo so perfettamente, stavolta ho toccato il vertice dell'infantilismo
informatico. Prendo il ciuccio e vado a nanna, buonanotte :-)
Ciao, grazie.
-- 
Nicoletta

 informatico. Prendo il ciuccio e vado a nanna, buonanotte :-)
Non e` detto. Probabilmente non sai niente di come Unix gestisce i
permessi. Ti consiglio di leggerti qualcosa a riguardo, come "Appunti di
Informatica Libera".
Bye.

 Informatica Libera".
Grazie :)
-- 
Nicoletta

 Ho la versione 4.3.2, ma mkdir(dir,ottale) sembra ignorare l'ottale. Cmq
Forse perche` lavori su server Windows, dove i permessi sono gestiti in
modo diverso.
Bye.

 Forse perche` lavori su server Windows
Mmmmmm... mica tanto: Unix in locale, Linux in remoto.
Con Windows un giorno ci incontrammo, ci guardammo, ci studiammo, e
capimmo che la nostra storia stava finendo sul nascere :-)
Ciao Alessandro, grazie di nuovo, alla prossima :)
-- 
Nicoletta

 
Se non hai già risolto hai verificato che l'ottale cominci col numero 
zero? (es. 0777)
Tac

 zero? (es. 0777)
Sissě, grazie, ma devo precisare una cosa: su Linux non ho mai provato;
sono invece certa che non funzioni sul server di casa (Unix), in seguito
alla creazione della directory devo assolutamente assegnare i permessi
con chmod.
Figurati che adesso sono alle prese col problema "passare l'ottale come
variabile", non mi serve assolutamente a niente, ma sono incuriosita.
Ah, mi raccomando: non datemi suggerimenti, forse riesco a farcela da
sola, ho giŕ qualche idea. 
Tanto se non ce la faccio torno all'attacco  ^_^
Di nuovo grazie :)
-- 
Nicoletta

 
Sarebbe interessante indagare. Perchè non fai una ricerca in 
http://bugs.php.net/
 ed eventualmente posti il baco o al limite non 
posti un commento sul manuale di php alla pagina relativa alla funzione?
Se vieni a capo di qualcosa facci sapere.
Ciao
Tac