[RESOLU] Erreur sur OPENDIR dans ALEATOIRE + SQL

Eléphanteau du PHP | 28 Messages

07 nov. 2012, 22:38

Bonjour,

Depuis deux jours, je tente de faire un programme pour un site, qui ne fonctionne pas.

Objectif : programme qui permet :
1) Pour chaque "album" de mon table "albums", il affiche un "div"
2) Dans ce div, j'affiche une image aléatoire récupéré dans le dossier "albums/upload_$nomalbum/principal"
C'est là que ça plante : il ne reconnait pas la variable ici, alors qu'avant ça fonctionne très bien

Voilà mon fameux code :
<?php
    include('connexion.php');
    $requete="select * from albums";
    $resultat=mysql_query($requete, $connexion) or die ('Requête incorrecte');
    $l=mysql_fetch_array($resultat);
    
    while($l)
    {
?>

	<div class="item">
	    <h2 id="post-1005"><span class="title"><a href="<?php echo $l['nom'] ?>.php"><?php echo $l['nom'] ?></a></span></h2>
	    <a href="<?php echo $l['nom'] ?>.php">
					
		<?php
		$dir = "albums/upload_".$l['nom']."/principal/";
		$opened_dir = opendir($dir);

		if(!$opened_dir) die('Erreur');
		$image_list = array();

		$i = 0;

		while ( ($file = readdir($opened_dir)) !== FALSE )
		{
			if( is_file($dir.$file) )
			 {
			      $image_list[$i] = $file;

			      $i++;
			 }
		}
		closedir($opened_dir);
		?>
		<?
		$i = mt_rand(0,count($image_list)-1);
		echo '<img src="',$dir,$image_list[$i],'" height="200px" width="540px"/>';
		?>
					
    </a>
</div>

<?php
    $l = mysql_fetch_array($resultat);
    }
?>
Je veux bien croire que je n'ai pas été très précise, mais j'ai vraiment du mal et si vous avez des questions je peux vous répondre.

Voici le message d'erreur qui s'affiche
Warning: opendir() [function.opendir]: Unable to access ./albums/upload_ Mon premier album/principal/ in /htdocs/photos.php on line 53

Warning: opendir(./albums/upload_ Mon premier album/principal/) [function.opendir]: failed to open dir: Permission denied in /htdocs/photos.php on line 53
Erreur
Mes images se trouvent donc dans albums/upload_LENOMDELALBUM/principal

Merci d'avance :)

Cordialement ...

Pauline

PS : je me suis servis de code déjà présent sur le net, que j'ai remis à ma sauce
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 25 Messages

07 nov. 2012, 23:52

hello,

Tu test ton site ou ? sous quel OS ? en local ? sur un serveur ? windows ou linux ?

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 00:02

Mon site est sur un serveur web (lws), ... windows 7
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 00:17

Je sais pas comment tu as créé tes dossiers albums/upload_xxxx/principal/ mais comme t'as pu le voir php n'a pas les permissions requise pour les ouvrir.

1 - Ton serveur web tourne sous linux ?
2 - Essaye d'utiliser le chemin relatif $dir = $_SERVER["DOCUMENT_ROOT"] . "/albums/etc/etc/";
3 - Vérifie si php a bien les droit en lecture sur tes dossiers.

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 00:26

Mon serveur web ne tourne pas sous Linux non.
Voilà comment se passe la création d'un album :
1) On écrit le nom de l'album (qui ira dans la variable $nomalbum), et quand on valide, le traitement est le suivant :
a) Création du dossiers albums/$nomalbum
b) Création du dossier albums/$nomalbum/principal
c) Création du dossier albums/$nomalbum/thumbs
d) Création de d'autres fichiers ...

J'ai les droits en lecture sur les dossiers ...

Et même avec $_SERVER["DOCUMENT_ROOT"] ça ne fonctionne pas ...
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 00:45

Et j'insiste sur le fait que mon code fonctionne très bien à la base, quand je met : $dir = "albums/upload_Nature/principal/";
(en imaginant que mon album s'appelle "Nature").

En gros, quand j'enlève la variable dans mon $dir alors ça fonctionne ...

Mais j'aimerais vraiment la mettre ! Et je ne vois pas le soucis ...
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 00:52

Si ton dossier /albums est dans ton document root et pas ailleurs.
Si php a les droits en lecture sur les dossiers
Si les dossiers existent bel et bien et que t'as pas fait de fautes dans le path. (a ta place j'éviterais les espace dans les noms de dossier)

Y'a aucune raison pour que opendir() te retourne un permission denied ...

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 00:53

Ok donc tu devrais éviter les espaces et vérifier si ta requête te retourne les bons nom de dossier.
Exemple dans /albums/upload_ Mon premier album/principal/ t'as un espace après le _ et avant le M C'est voulu ?

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 00:56

meme quand je ne met pas d'espace ca ne fonctionne pas ... je suis assez perdu !
Warning: opendir() [function.opendir]: Unable to access www.ladyludioo.fr/albums/upload_ nature/principal/ in /htdocs/photos.php on line 49

Warning: opendir(www.ladyludioo.fr/albums/upload_ nature/principal/) [function.opendir]: failed to open dir: Permission denied in /htdocs/photos.php on line 49
Erreur
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 00:58

Tu as toujours un espace après le upload_ ... surement une piste..

Vérifie dans le champ nom de ta base d'album qu'il n'y a pas un espace avant chaque nom d'album..
Modifié en dernier par cezame le 08 nov. 2012, 00:59, modifié 1 fois.

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 00:59

Tu as toujours un espace après le upload_ ... surement une piste..
meme sans ça ne fonctionne pas
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 01:05

Et je viens de voir, mais effectivement je ne peux même plus accéder au dossier !
Forbidden

You don't have permission to access /albums/upload_nature/ on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Voilç ce qui s'affiche. J'ai pourtant mis les droits, je ne comprend pas !
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 01:09

Essaye avec ton script php pas avec ton navigateur

Eléphanteau du PHP | 25 Messages

08 nov. 2012, 01:11

Ca fonctionne ?
<?php

$dir = "albums/upload_Nature/principal/";

$od = opendir($dir);


?>

Eléphanteau du PHP | 28 Messages

08 nov. 2012, 11:46

Ca fonctionne ?
<?php

$dir = "albums/upload_Nature/principal/";

$od = opendir($dir);


?>
Là oui, ça ne me met aucune erreur !
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]