Discussion:
Vista PHP et le repertoire temporaire internet
(trop ancien pour répondre)
EricD
2007-05-14 16:36:36 UTC
Permalink
Bonjour

J'espère être clair dans la formulation de mon problème ;-)

Dans un script je génère un fichier image et ensuite je dis à la page du
client d'afficher cette image. Cela fonctionne bien sauf que je suis obliger
de mettre en dur le chemin où il génère et lit le fichier. De plus ce chemin
doit obligatoirement correspondre au répertoire "Temporary Internet Files"
de l'utilisateur de vista ( sous xp pas de problème je peux le mettre
n'importe où ), sinon je ne peux pas lire les fichiers.

Quelqu'un aurait une petite idée du pourquoi et surtout si il n'y a pas
une variable pour ce genre de chemin ?

Le bout de code avec le chemin en dur.

while( $row = mysql_fetch_array($result) ){
echo '<div class="cine">';
//======================== chemin en dur
======================================
$zone_accessible='g:\\Users\\Papa\\AppData\\Local\\Microsoft\\Windows\\Temporary
Internet Files\\';
//========================================================================
if (!$image=fopen($zone_accessible.$row[T_Nom].'.jpg', "w"))
die('Erreur: pas pu créer $row[2]<br>');
fwrite($image,$row[T_Image]);
fclose($image);
echo '<span class="position">';
echo '<img class="cine" src="'.$zone_accessible.$row[T_Nom].'.jpg "
';
echo '</span>';
echo '<div class="cine1">';
echo '<ul class="cine">';
echo '<li> <span class="rougegras" > film : '.$row[T_Nom].'
</span>';
echo '<ul class="cine">';
echo '<li> categorie : <span class="noirgras" >
'.$row[T_Categorie].' </span> </li>';
echo '<li> type : <span class="noirgras" >
'.$row[T_Type].' </span> </li>';
echo '<li> producteur: <span class="noirgras" >
'.$row[T_Producteur].' </span> </li>';
echo '<li> durée : <span class="noirgras" >
'.$row[T_Duree].' </span> </li>';
echo '<li> support : <span class="noirgras" >
'.$row[T_Support].' </span> </li>';
echo '</ul>';
echo '</li>';
echo '</ul>';
echo '</div>';
echo '<div class="cine2">';
echo '</div>';
echo '</div>';
echo'<br>';
$yena = 1;
}


Aurevoir
Olivier Miakinen
2007-05-14 17:33:55 UTC
Permalink
Post by EricD
Dans un script je génère un fichier image et ensuite je dis à la page du
client d'afficher cette image. Cela fonctionne bien sauf que je suis obliger
de mettre en dur le chemin où il génère et lit le fichier. De plus ce chemin
doit obligatoirement correspondre au répertoire "Temporary Internet Files"
de l'utilisateur de vista ( sous xp pas de problème je peux le mettre
n'importe où ), sinon je ne peux pas lire les fichiers.
Quelqu'un aurait une petite idée du pourquoi
Le pourquoi, c'est probablement que Microsoft avec Vista essaye de
copier ce que fait Unix depuis une vingtaine d'années : mettre des
droits d'accès sur les répertoires. Ce qui est curieux malgré tout
c'est que tu aies le droit de créer le fichier mais pas de le relire...
Post by EricD
et surtout si il n'y a pas
une variable pour ce genre de chemin ?
Regarde dans $_ENV[] s'il n'y aurait pas par hasard ça quelque part (tu
peux faire un phpinfo() pour le savoir). Sinon c'est peut-être ini_get()
ou apache_getenv() qui te donnera la solution.

Sinon, deux autres idées :
1) créer toi-même une variable d'environnement avec la bonne valeur
(je précise tout de suite que je ne sais pas comment on fait) ;
2) créer un autre répertoire ayant les droits de lecture et d'écriture,
mais dans un emplacement relatif à la racine de ton site.
Thief13
2007-05-15 07:01:30 UTC
Permalink
Post by Olivier Miakinen
Le pourquoi, c'est probablement que Microsoft avec Vista essaye de
copier ce que fait Unix depuis une vingtaine d'années : mettre des
droits d'accès sur les répertoires.
Windows NT le fait aussi depuis des années, et XP autant que Vista sont
basé sur la technologie NT. en plus, ils utilisent quasiment le même
système de fichier (NTFS). je ne comprend donc pas pourquoi Vista
poserais plus de problème que XP sur ce domaine là... Il y a tant de
nouveauté que dans dans la dernière version de NTFS ?
EricD
2007-05-15 13:31:32 UTC
Permalink
Post by Olivier Miakinen
Post by EricD
Dans un script je génère un fichier image et ensuite je dis à la page du
client d'afficher cette image. Cela fonctionne bien sauf que je suis obliger
de mettre en dur le chemin où il génère et lit le fichier. De plus ce chemin
doit obligatoirement correspondre au répertoire "Temporary Internet Files"
de l'utilisateur de vista ( sous xp pas de problème je peux le mettre
n'importe où ), sinon je ne peux pas lire les fichiers.
Quelqu'un aurait une petite idée du pourquoi
Le pourquoi, c'est probablement que Microsoft avec Vista essaye de
copier ce que fait Unix depuis une vingtaine d'années : mettre des
droits d'accès sur les répertoires. Ce qui est curieux malgré tout
c'est que tu aies le droit de créer le fichier mais pas de le relire...
Effectivement c'est bizarre de pouvoir créer des fichiers n'importe où mais
de pas pouvoir les lire.
Je pense que c'est du au fait que quand je crée le fichier je suis côté
serveur et que quand je le lis je suis côté client.
pour rappel
le code pour créer le fichier avec ce f...u chemin :

$zone_accessible='g:\\Users\\Papa\\AppData\\Local\\Microsoft\\Windows\\Temporary
Internet Files\\';
if (!$image=fopen($zone_accessible.$row[T_Nom].'.jpg', "w"))
die('Erreur: pas pu créer $row[2]<br>');
fwrite($image,$row[T_Image]);
fclose($image);

le code généré par php pour lire le fichier depuis le butineur

echo '<img class="cine" src="'.$zone_accessible.$row[T_Nom].'.jpg "
Post by Olivier Miakinen
Post by EricD
et surtout si il n'y a pas
une variable pour ce genre de chemin ?
Regarde dans $_ENV[] s'il n'y aurait pas par hasard ça quelque part (tu
peux faire un phpinfo() pour le savoir). Sinon c'est peut-être ini_get()
ou apache_getenv() qui te donnera la solution.
1) créer toi-même une variable d'environnement avec la bonne valeur
(je précise tout de suite que je ne sais pas comment on fait) ;
2) créer un autre répertoire ayant les droits de lecture et d'écriture,
mais dans un emplacement relatif à la racine de ton site.
Sinon :
J'ai fait un phpinfo() et résultat rien d'intéressant. J'ai bien essayé
des variables publics de répertoire mais rien de rien.
Pour rappel ce bout de code fonctionne trés bien sous XP ( quelque soit
le chemin ) et pas sous Vista
Enfin je n'ai pas l'affichage de l'image si je me autre chose que
'g:\\Users\\Papa\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet
Files\\'
comme chemin

Continuer la lecture sur narkive:
Loading...