probleme avec un opendir()

Eléphant du PHP | 75 Messages

23 févr. 2010, 19:31

Bonjour,
la fonction opendir() ne fonctionne pas sur mon serveur...
voici le message d'erreur :

PHP Warning: opendir() expects parameter 2 to be resource, integer given in....

savez-vous d'où le probleme peut venir ?

merci pour votre aide.

Petit nouveau ! | 9 Messages

23 févr. 2010, 20:59

Bonsoir,

Ce serait bien que tu nous donne ton code vu que le paramètre 2 de la fonction opendir est aléatoire.


Angus

Eléphant du PHP | 75 Messages

24 févr. 2010, 11:15

voici mon code :
$open = opendir("Documents/", 0700);

Mammouth du PHP | 2937 Messages

24 févr. 2010, 11:27

La fonction opendir () ne permet pas d'indiquer les permissions. Supprime donc ton second paramètre, qui est facultatif et ne concerne que les contextes de flux.
$open = opendir ('Documents/');
Soit dit en passant, pour ouvrir et explorer un dossier, il existe une fonction en PHP 5 plus pratique : scandir (). ;)

Eléphant du PHP | 75 Messages

24 févr. 2010, 12:06

en effet ça marche mieux sans la permission !

par contre je galère toujours.. ce n'est pas mon truc les opendir(), readdir(), mkdir()...

en fait je souhaite vérifier si un dossier existe et le créer si ce n'est pas le cas... :cry:
y a t il une solution pour eviter le message d'erreur quand le dossier n'existe pas ?
$open = opendir("Documents/32/");
	if($open==TRUE)
	{
		echo"ok";
		closedir("Documents/32/");
	}
	else{
		echo"fichier cree";
		mkdir ("Documents/32/");
	}

Mammouth du PHP | 2937 Messages

24 févr. 2010, 12:14

Pour la fonction closedir (), c'est même motif, même punition qu'opendir () : pas de paramètre sur les permissions (en cas de doute sur les types de paramètres, RTFM ;) ). En outre, quand tu utilises un booléen dans une condition, utilise un opérateur d'identité plutôt que l'opérateur d'égalité. Enfin, vérifie, lorsque tu tentes de créer un dossier, que ce dernier est bien créé.
$open = opendir ('Documents/32/');
if ($open === true)
{
  echo 'ok';
  closedir ($open);
}
else
{
  echo (mkdir ('Documents/32/', 0700))? 'Dossier créé': 'PHPFrance, on a encore un problème';
}

Eléphant du PHP | 75 Messages

24 févr. 2010, 12:37

y a t il une solution pour eviter le message d'erreur quand le dossier n'existe pas ?
Warning: opendir(Documents/32/): failed to open dir: Invalid argument in

ViPHP
ViPHP | 5462 Messages

24 févr. 2010, 12:39

tu peu faire un test avec is_dir
http://fr2.php.net/manual/fr/function.is-dir.php

Petit nouveau ! | 9 Messages

24 févr. 2010, 12:52

@opendir

Mammouth du PHP | 2937 Messages

24 févr. 2010, 13:15

y a t il une solution pour eviter le message d'erreur quand le dossier n'existe pas ?
Warning: opendir(Documents/32/): failed to open dir: Invalid argument in
Essaie en supprimant le dernier /.
opendir ('Documents/32');
@opendir
Le recours à l'@ n'est pas très recommandé : pour ne pas afficher d'erreur, le mieux est d'utiliser ini_set () pour mettre la directive display_errors à Off (et uniquement en production). ;)

ViPHP
ViPHP | 5462 Messages

24 févr. 2010, 14:13

Le recours à l'@ n'est pas très recommandé : pour ne pas afficher d'erreur, le mieux est d'utiliser ini_set () pour mettre la directive display_errors à Off (et uniquement en production). ;)
+1 :D

Petit nouveau ! | 9 Messages

24 févr. 2010, 15:58

Tu as raison mais je ne faisais que répondre à sa question mais je ne suis pas d'accord sur le fait de cacher toutes les erreurs pour ne pas afficher une erreur.
Sinon is_dir ou alors mettre une condition sur opendir pour continuer le script bien que mtnt j'utilise constamment scandir.

ViPHP
ViPHP | 5462 Messages

24 févr. 2010, 16:03

ou encore mieux DirectoryIterator

Petit nouveau ! | 9 Messages

24 févr. 2010, 16:44

Oui mais va expliquer la POO à qqun qui vient d'apprendre opendir #-o
Mais oui pourquoi pas 8-)

Eléphant du PHP | 75 Messages

04 mars 2010, 11:11

c'est du chinois pour moi.. les DirectoryIterator, ini_set()...
$open = opendir("Documents/".$num_retour."/");
	if($open==TRUE)
	{}
	else{mkdir ("Documents/".$num_retour."/");}
comment adapter mon code afin de cacher le message d'erreur...