[POO] Le processus ne peut pas accéder au fichier
Posté : 18 mars 2019, 19:58
Bonsoir,
Je cherche à déplacer des images (avions-001, avions-002... et montagne-2009-001, montagne-2009-002...) contenues dans un dossier "images".
Vers des sous dossiers ("avions" et "montagne") contenus dans "images", qui devront être créés s'ils n'existent pas.
Le code marche très bien car les images sont déplacées vers les sous dossiers correspondants lorsque je fais un refresh de la page.
Or, si je fais un 2e refresh de la page, le message d'erreur suivant apparaît et je n'arrive pas à trouver d'où vient le problème:
( ! ) Warning: rename(C:/wamp64/www/devoir1_3/images/avions,C:/wamp64/www/devoir1_3/images/avions/avions): Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (code: 32) in C:\wamp64\www\devoir1_3\class\Image.php on line 22
( ! ) Warning: rename(C:/wamp64/www/devoir1_3/images/montagne,C:/wamp64/www/devoir1_3/images/montagne/montagne): Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (code: 32) in C:\wamp64\www\devoir1_3\class\Image.php on line 22
Voici le code en question.
index.php
contenu.php
config.php
Image.php
L'erreur apparaît au 2e refresh, donc au 2e tour de boucle qui normalement ne devrait pas avoir lieu car au 1er le dossier et créé s'il n'existe pas et les images y sont déplacées dans ceux-ci.
D'avance merci
Je cherche à déplacer des images (avions-001, avions-002... et montagne-2009-001, montagne-2009-002...) contenues dans un dossier "images".
Vers des sous dossiers ("avions" et "montagne") contenus dans "images", qui devront être créés s'ils n'existent pas.
Le code marche très bien car les images sont déplacées vers les sous dossiers correspondants lorsque je fais un refresh de la page.
Or, si je fais un 2e refresh de la page, le message d'erreur suivant apparaît et je n'arrive pas à trouver d'où vient le problème:
( ! ) Warning: rename(C:/wamp64/www/devoir1_3/images/avions,C:/wamp64/www/devoir1_3/images/avions/avions): Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (code: 32) in C:\wamp64\www\devoir1_3\class\Image.php on line 22
( ! ) Warning: rename(C:/wamp64/www/devoir1_3/images/montagne,C:/wamp64/www/devoir1_3/images/montagne/montagne): Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (code: 32) in C:\wamp64\www\devoir1_3\class\Image.php on line 22
Voici le code en question.
index.php
<?php
require('config.php');
require('class/Image.php');
require('contenu.php');
?>
contenu.php
<?php
$image = new Image();
$images = $image->getImages(IMAGE_DIR_PATH);
?>
<?php foreach ($images as $image) : ?>
<li><a href="<?php echo IMAGE_DIR_URL . $image ?>"><?php echo $image ?></a></li>
<?php endforeach ?>
config.php
<?php
define('WEB_DIR_NAME', 'devoir1_3');
define('IMAGE_DIR_NAME', 'images');
define('IMAGE_DIR_PATH', $_SERVER['DOCUMENT_ROOT'] .'/'. WEB_DIR_NAME .'/'. IMAGE_DIR_NAME .'/');
define('IMAGE_DIR_URL', 'http://' .$_SERVER['HTTP_HOST'] .'/'. WEB_DIR_NAME .'/'. IMAGE_DIR_NAME .'/');
?>
Image.php
<?php
class Image
{
public function getImages($image_dir)
{
if ($handle = opendir($image_dir))
{
while (false !== ($entry = readdir($handle)))
{
if ($entry != '.' && $entry != '..')
{
$images[] = $entry;
$explode_filename = explode('-', $entry);
if (!is_dir(IMAGE_DIR_PATH . $explode_filename[0]))
{
var_dump(IMAGE_DIR_PATH . $explode_filename[0]);
mkdir(IMAGE_DIR_PATH . $explode_filename[0]);
}
$oldname = IMAGE_DIR_PATH .$entry;
$newname = IMAGE_DIR_PATH .$explode_filename[0]. '/' .$entry;
rename($oldname, $newname);
}
}
}
closedir($handle);
return $images;
}
}
?>
L'erreur apparaît au 2e refresh, donc au 2e tour de boucle qui normalement ne devrait pas avoir lieu car au 1er le dossier et créé s'il n'existe pas et les images y sont déplacées dans ceux-ci.
D'avance merci