quando sviluppo in locale e faccio un unlink() su un file devo prima fare il chmod a 777 per avere il permesso di cancellazione? pensavo che in locale non ci fossero scazzi simili e si potesse cancellare senza problemi
quando sviluppo in locale e faccio un unlink() su un file devo prima fare il chmod a 777 per avere il permesso di cancellazione? pensavo che in locale non ci fossero scazzi simili e si potesse cancellare senza problemi
evidentemente non hai i settato bene i permessi sulla directory...non serve farlo sempre! basta farlo una sola volta nella root principale di apache
ma siccome sto sviluppando un'applicazione open source volevo fare in modo di far fare tutto allo script in modo che funzioni con ogni settaggio possibile del webserver. In linea di principio va bene fare preventivamente il chmod su ogni file o dir su cui si vuole poi agire per cancellare o rinominare?
beh quello che dici non si può fare...
ogni directory ha dei permessi di lettura e scrittura per proprietario, gruppo, altri utenti
l'esecuzione di uno script php avviene tramite browser, e ogni operazione viene fatta da un utente (io uso ubuntu e l'utente in questione mi pare sia www-data).
se questo utente (www-data) non ha i permessi di scrittura sulla directory del server, io non potrò mai fare un chmod su dei file...in quanto non ho i permessi per farlo! Quindi io devo partire già dall'inizio con i permessi settati a 777 per far fare tutto a tutti (compresi i chmod)
dimenticavo, se l'applicazione potrà essere eseguita online, sul webserver online avrai sicuramente i permessi di lettura scrittura ed esecuzione del tuo script
no no senti ... ti spiego meglio. Io ho uno script che seg agiù file. Vuoi dirmi che non funzionerà mai se chiamato da un utente qualsiasi?
allora
ogni directory ha i permessi per
proprietario LETTURA SCRITTURA ESECUZIONE
gruppo LETTURA SCRITTURA ESECUZIONE
altri utenti LETTURA SCRITTURA ESECUZIONE
ora bisogna distinguere due casi:
CREAZIONE E MODIFICA DI FILE COME UTENTE IN QUALSIASI DIRECTORY DEL DISCO
in questa fascia rientrano tutti i file che crei o modifichi con i vari software, ad esempio
un file di testo creato con openoffice e salvato nella tua home
/home/nomeutente/file.odt
oppure la creazione (ad esempio con l'editor php SCREEM!) di un file php nella directory del webserver
/var/www/sito1/index.php
queste operazioni le esegui come utente che effettua il login all'avvio del computer.
CREAZIONE E MODIFICA DI FILE NEL WEBSERVER TRAMITE SCRIPT PHP
in questa fascia rientrano le modifiche o le creazioni di file e directory che vengono effettuate tramite script php.
ad esempio uno script che ha queste righe
questo codice non viene eseguito come utente che si logga all'avvio del computer, ma viene eseguito (per lo meno su ubuntu...) dall'utente www-data.Codice PHP:
if ( !file_exists( ... ) )
mkdir( .... )
ora, se tu controlli i permessi sulla document root di apache noterai come sempre
proprietario avra tutti i permessi
gruppo probabilmente tutti i permessi
altri utenti potresti 1 o più permessi negati (lettura esecuzione e scrittura)
nel caso in "altri utenti" hai dei permessi negati, devi impostargli tutti i permessi per poter fare le modifiche che ti servono tramite l'esecuzione degli script
prima domanda: ma nel caso di uno script chiamato da remoto chi è "proprietario" chi è "gruppo" e chi "altri"? www-data (o chi per esso in windows) è altri utenti o gruppo? mi par di capire da quello che scrivi che è "altri utenti" no?
seconda domanda: ma se il server è remoto come faccio cambiare i permessi per "altri utenti"?
grazie
ah, ma tu stai parlando di windows?? io pensavo parlassi di linux!
per cambiare i permessi devi usare un client ftp, lo stesso con cui fai l'upload dei file
no no senti ti spiego bene. io sviluppo in locale ma poi butto tutto online. Sto scrivendo un'applicazione per wiki che usa i file per archiviare i dati. Una parte dello script permette (o meglio vorrebbe permettere) ai futuri utenti registrati di cancellare questi cazzo di fle (ogni file equivale a un nodo del viki) quando vengono ritenuti obsoleti o altro. Lo script passa a se stesso i riferimenti sulla locazione del file (i file sono organizzati in cartelle) per poi fare l'eliminazione. La creazione di nuovi file è un processo continuo (per natura intrinseca del wiki) e implementato dallo script stesso [con uso di funzioni tipo fopen("nomefile", a+)]. Ora sti benedetti utenti devono avere a che fare con file 777 altrimenti chi cancella niente?
La mia domanda fin da principio era:
Non è una buona idea Chmoddare i file dopo averli creati a 777 dimodo che in fase di cancellazione non ci siano problemi? Non posso chiedere agli utenti di andare via ftp ogni volta per cambiare i permessi degli innumerevoli file txt (contenenti nodi del wiki) che vgiornalmente; non sarebbe motlo professionale no credi?
Per concludere io non ho ancora capito (e neanche provato per ragioni di tempo) se si puo fare eseguire un chmod() allo script quando viene chiamato da un benedetto client: tipo creare il file e poi chmoddarlo.
se pò fa o no?