Page 1 sur 2

Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 07 nov. 2012, 22:38
par popo79pr
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

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 07 nov. 2012, 23:52
par cezame
hello,

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

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:02
par popo79pr
Mon site est sur un serveur web (lws), ... windows 7

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:17
par cezame
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.

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:26
par popo79pr
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 ...

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:45
par popo79pr
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 ...

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:52
par cezame
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 ...

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:53
par cezame
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 ?

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:56
par popo79pr
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

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:58
par cezame
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..

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 00:59
par popo79pr
Tu as toujours un espace après le upload_ ... surement une piste..
meme sans ça ne fonctionne pas

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 01:05
par popo79pr
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 !

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 01:09
par cezame
Essaye avec ton script php pas avec ton navigateur

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 01:11
par cezame
Ca fonctionne ?
<?php

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

$od = opendir($dir);


?>

Re: Erreur sur OPENDIR dans ALEATOIRE + SQL

Posté : 08 nov. 2012, 11:46
par popo79pr
Ca fonctionne ?
<?php

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

$od = opendir($dir);


?>
Là oui, ça ne me met aucune erreur !