Precedente :: Successivo |
Autore |
Messaggio |
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 24 Giu 2009 19:58 Oggetto: |
|
|
rieccomi, con un nuovo problema ^_^
allora, premetto che stavolta funziona tutto, la directory dove metto i files in è la seguente:
/home/nome_utente/php
allora, volevo provare ad aprire un documento, quindi ho scritto nel file in .php:
Citazione: |
$document_root = $server['document_root'];
$fp = fopen("$document_root/../ciao.txt", 'w');
|
il documento ciao.txt si trova in /home/nome_utente/php...
però, quando apro la pagina, mi appare il seguente messaggio:
Warning: fopen(/../ciao.txt) [function.fopen]: failed to open stream: Permesso negato in /home/nome_utente/php/processorder.php on line 74
line 74 è il comando $fp = ...
sapete cosa possa essere? io non sono riuscito a venirne a capo... |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 24 Giu 2009 21:45 Oggetto: |
|
|
Ciao fekir,
il problema è che non puoi uscire dalla document_root!
Per questioni di sicurezza (a meno di non cambiare le impostazioni di apache e alcune variabili di conf di php) i files che puoi raggiungere sono quelli dentro alla document_root del tuo sito.
In oltre (ma questa è un'altra cosa che non centra con il tuo problema) la costante super globale è:
Codice: |
$_SERVER['DOCUMENT_ROOT']
|
e non
Codice: |
$server['document_root']
|
|
|
Top |
|
|
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 24 Giu 2009 22:03 Oggetto: |
|
|
freemind ha scritto: | Ciao fekir,
il problema è che non puoi uscire dalla document_root!
|
ma...sono uscito?
dove avrei dovuto mettere il file se non sotto: /home/nome_utente/php ?
(mi sa che prima o poi bloccherai il mio accesso al forum per le mie domandi alquanto sciocche ^^) |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 24 Giu 2009 22:07 Oggetto: |
|
|
Primo: il forum esiste per aiutare la gente che chiede aiuto quindi non ci sono problemi.
Secondo: io prima sono stato impreciso: non puoi scrivere fuori dalla document_root per questioni di sicurezza (a meno dei cambiamenti che ho sottolineato prima). Puoi leggere. Quindi se apri il file in lettura, 'r' e non 'w' non dovresti ottenere il messaggio di errore.
Terzo: ora io faccio una domanda a te; tu hai una dir /home/utente/php in cui crei le subdir dei progetti, giusto? hai anche configurato i virtualhost oppure chiami la pagine con
Codice: |
http://localhost/nome_progetto (ammettendo che la pagina sia index.php)
|
?? |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 24 Giu 2009 22:13 Oggetto: |
|
|
In realtà ho verificato che le impostazioni di default di apache in xampp permettono di uscire, allora hai un problemi di permessi sul file.
Ricorda che può esser letto se per nobody ci sono i permessi di lettura, per essere scritto quelli di scrittura.
Se crei ciao.txt a manina, è probabile che i permessi siano rw per il tuo utente ma al più r per gli altri.
Prova a dare da console
Codice: |
chmod 766 ciao.txt (o anche chmod 666 ciao.txt)
|
nella dir in cui si trova ciao.txt e riesegui il tuo script. |
|
Top |
|
|
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 24 Giu 2009 22:22 Oggetto: |
|
|
allora, la document root in teoria è questa: /opt/lampp/htdocs/ giusto?
io però la avevo cambiata in questa: home/nome_utente/php
o no? adesso io i file li metto in quella cartella e digitando:
http://localhost/nomeprogetto.php
visualizzo corretamente tutto il sito fino all'aprire con quel comando il documento di testo home/nome_utente/php/ciao.txt
inoltre, ho appena provato, anche scrivendo:
$fp = fopen ("$document_root/../ciao.txt", 'r');
mi dice
Warning: fopen(/../ciao.txt) [function.fopen]: failed to open stream: Nessun file o directory in /home/federico/php/processorder.php on line 74
processorder è il nome del file in .php dove c'è scritto il comando di aprire il documento di testo...
edit:
si ciao.txt lo ho fatto a mano, se digito quello che mi hai detto te nel terminale ottengo queste risposte:
...:~$ chmod 766 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory
...:~$ chmod 666 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 24 Giu 2009 22:29 Oggetto: |
|
|
Mi limito per ora solo all'edit
fekir ha scritto: |
edit:
si ciao.txt lo ho fatto a mano, se digito quello che mi hai detto te nel terminale ottengo queste risposte:
...:~$ chmod 766 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory
...:~$ chmod 666 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory |
il comando lo hai dato da dentro alla dir che contiene ciao.txt (e devi esser lì altrimenti devi dare il percorso completo chmod 766 "/home/nome_utente/php/ciao.txt")?
L'errore restituito indica che il file, nella dir in cui sei, non c'è.
Puoi verificare se eri nella dir corretta? |
|
Top |
|
|
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 25 Giu 2009 08:41 Oggetto: |
|
|
freemind ha scritto: | Mi limito per ora solo all'edit
fekir ha scritto: |
edit:
si ciao.txt lo ho fatto a mano, se digito quello che mi hai detto te nel terminale ottengo queste risposte:
...:~$ chmod 766 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory
...:~$ chmod 666 ciao.txt
chmod: impossibile accedere a "ciao.txt": Nessun file o directory |
il comando lo hai dato da dentro alla dir che contiene ciao.txt (e devi esser lì altrimenti devi dare il percorso completo chmod 766 "/home/nome_utente/php/ciao.txt")?
L'errore restituito indica che il file, nella dir in cui sei, non c'è.
Puoi verificare se eri nella dir corretta? |
no, allora non ero nella dir corretta...
...:~$ chmod 666 "/home/nome_utente/php/ciao.txt
>
...:~$ chmod 766 "/home/nome_utente/php/ciao.txt
>
ecco le risposte che ottengo |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11566 Residenza: Tokelau
|
Inviato: 25 Giu 2009 10:30 Oggetto: |
|
|
fekir ha scritto: | mi dice
Warning: fopen(/../ciao.txt) [function.fopen]: failed to open stream: Nessun file o directory in /home/federico/php/processorder.php on line 74 |
guarda che sta cercando di aprire un file ciao.txt che si trova in /../ e non nella cartella che dici tu. Prova a scrivere un path costante, l'errore è nella variabile che imposti alla riga sopra...
|
|
Top |
|
|
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 25 Giu 2009 10:36 Oggetto: |
|
|
ma /../ cosa è allora esattamente? credevo fosse /home/nome_utente/php/, cioè quella che ho impostato come document_root, dove metto tutti i files per visualizzarli..
vedrò di provare a mettere allora una path costante |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11566 Residenza: Tokelau
|
Inviato: 25 Giu 2009 10:48 Oggetto: |
|
|
se fai una
Codice: | $fp = fopen ("$document_root/../ciao.txt", 'r'); |
e l'errore dice solo
direi che $document_root è vuota... |
|
Top |
|
|
fekir Utente cancellato
Registrato: 17/10/08 20:50 Messaggi: 223
|
Inviato: 25 Giu 2009 11:01 Oggetto: |
|
|
allora, questi sono altri tentativi che ho fatto:
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'w');
oppure
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'r');
--> non appare niente d niente
(non è questo l'indirizzo statico?)
$fp = fopen ("/ciao.txt", 'w');
oppure
$fp = fopen ("$document_root/ciao.txt", 'w');
--->Warning: fopen(/ciao.txt) [function.fopen]: failed to open stream: Nessun file o directory in /home/nome_utente/php/processorder.php on line 74 |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11566 Residenza: Tokelau
|
Inviato: 25 Giu 2009 11:09 Oggetto: |
|
|
fekir ha scritto: | allora, questi sono altri tentativi che ho fatto:
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'w');
oppure
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'r');
--> non appare niente d niente |
e funziona? Hai provato a leggere (o scrivere) dal/nel file? |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 25 Giu 2009 12:09 Oggetto: |
|
|
Rettifica.
Negli spiegoni di prima ho fatto un po' di casino con i virtualhost e una conf senza.
In soldoni, con la tua conf non puoi uscire mai dalla dir in cui crei i progetti che nel tuo caso è la document_root settata in httpd.conf.
Ero andato a massa perchè avevi messo i '..' nel percorso di ciao.txt.
ciao.txt è leggibile/scrivibile se è nella document_root di cui ho parlato qualche riga fa e se ha i permessi corretti per l'utente che esegue lo script.
Il chmod che ti ho fatto fare serve a quello e il fatto che non abbia restituito nulla vuol dire che è andata bene. Sarebbe corretto far sì che ciao.txt abbia come proprietario nobody,i permessi di lettura e scrittura per questo e al max la lettura per gli altri.
Tu vuoi raggiungere il file
Codice: |
/home/nome_utente/php/ciao.txt
|
e per farlo devi usare
Codice: |
$_SERVER['DOCUMENT_ROOT'] . '/'. 'ciao.txt';
|
fekir ha scritto: |
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'w');
oppure
$fp = fopen ("/home/nome_utente/php/ciao.txt", 'r');
--> non appare niente d niente
(non è questo l'indirizzo statico?)
$fp = fopen ("/ciao.txt", 'w');
oppure
$fp = fopen ("$document_root/ciao.txt", 'w');
--->Warning: fopen(/ciao.txt) [function.fopen]: failed to open stream: Nessun file o directory in /home/nome_utente/php/processorder.php on line 74
|
Le prime non ritornano nulla, quindi ok, le altre ti danno il warning perchè la var
credo che tu l'abbia inizializzata ancora come nel primo post del 3d e non con
Codice: |
$_SERVER['DOCUMENT_ROOT'];
|
Le maiuscole sono importanti! |
|
Top |
|
|
|