creazione di un file

ciao,

devo creare un file e lo faccio con

<?php       
$handle = fopen($path, "wd");
if( !handle )  die("Errore: non e' stato possibile creare il file $nome_image");
 // Scrive  nel file aperto.
fwrite($handle, $immagine)  or die( "Errore: non e' stato possibile salvare il file $nome_image)";
fclose($handle) or die( "Errore: non e' stato possibile chiudere il file $nome_image)";
?>

pero' in locale funziona perfettamente ma sul server mi da:  Errore: non e' stato possibile salvare il file $nome_image

e' possibile che il problema derivi dal fatto che non ho i diritti per creare i file e le cartelle?come faccio a scoprirlo e nel caso in cui sia questo il problema si puo' risolvere?

grazie a tutti

inviato 10 anni fa
purpitta
X 0 X

Ma nella variabile $path hai messo un percorso valido?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si, ho provato sia con il path assoluto che relativo

ho provato a eseguire questo script sullo stesso path

<?php 
$perms = fileperms($path);

if (($perms & 0xC000) == 0xC000) {
   // Socket
   $info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
   // Symbolic Link
   $info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
   // Regular
   $info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
   // Block special
   $info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
   // Directory
   $info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
   // Character special
   $info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
   // FIFO pipe
   $info = 'p';
} else {
   // Unknown
   $info = 'u';
}

// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
           (($perms & 0x0800) ? 's' : 'x' ) :
           (($perms & 0x0800) ? 'S' : '-'));

// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
           (($perms & 0x0400) ? 's' : 'x' ) :
           (($perms & 0x0400) ? 'S' : '-'));

// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
           (($perms & 0x0200) ? 't' : 'x' ) :
           (($perms & 0x0200) ? 'T' : '-'));

echo $info;
?>

e mi restituisce drwxr-xr-x

risposto 10 anni fa
purpitta
X 0 X

domanda:

se la fopen non fallisce vuol dire che il file lo crea?

se si perche' poi non riesce a scrivere o a chiudere nel file?inoltre se guardo dentro la cartella il file non c'e' neanche vuoto.....

non capisco  :idiot:

risposto 10 anni fa
purpitta
X 0 X

E' evidente che non hai i permessi di scrittura su quella cartella :dunno:

Modifica i permessi con un client FTP a 777

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ci provo, ma

drwxr-xr-x

non significa che ho i permessi?lo script non e' il proprietario?

risposto 10 anni fa
purpitta
X 0 X

 :D ha funzionato   :D

ma solo mettendo 7 in altri....cmq GRAZIE MILLE

risposto 10 anni fa
purpitta
X 0 X

Tieni presente che il PHP gira con i permessi di Apache (che spesso viene indicato con "www")

rwxr-xr-x significa che il proprietario può far tutto ma chi è il proprietario?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Mi dai il percorso della cartella dove hai i permessi 777  ;D

Come dice giustamente Gianni, chi è il proprietario dello script? Ovvero lo script gira come se il prorpietario sia lui, mentre la cartella è di tua prorpietà e non dello script.

Dovresti controllare i permessi con chown, ma da shell e dubito che tu possa farlo, o no?

M.

risposto 10 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda