Commande pour Supprimer des dossiers
Bonjour,
J'ai testé ce code dans un controlleur et ça fonctionne convenablement
Code:
1 2 3 4 5 6 7 8 9 10
|
$dir= $_SERVER['DOCUMENT_ROOT'] . 'SystemeBM/web/uploads/CGA_PRODUCTION/';
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );exit; |
Par contre ici, ça genere une exception
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
// pour tester : $ php app/console clear:folder
class GestionCommand extends ContainerAwareCommand {
protected function configure() {
$this
->setName('clear:folder')
->setDescription('Greet someone')
->addArgument(
'name', InputArgument::OPTIONAL, 'Who do you want to greet?'
)
->addOption(
'yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters'
)
;
}
protected function execute(InputInterface $input, OutputInterface $output) {
$dir= $_SERVER['DOCUMENT_ROOT'] . 'SystemeBM/web/uploads/CGA_PRODUCTION/';
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );exit;
$output->writeln('done');
}
} |
error :
C:\wamp\www\SystemeBM>php app/console clear:folder
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: rmdir(SystemeBM/web/uploads/CGA_PRODUCTION/): No such file or directory
clear:folder [--yell] [--] [<name>]
merci d'avance
$_SERVER['DOCUMENT_ROOT'] te retourne un NULL
$_SERVER['DOCUMENT_ROOT'] retourne un NULL dans le context d'une ligne commande et c'est logique
essai plustot de récupérer le paramêtre "kernel.root_dir" du container
voici une piste
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
....
class YourCommand extends ContainerAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output) {
$dir= $this->getParameter('kernel.root_dir') . '/../web/uploads/CGA_PRODUCTION/';
}
protected function getParameter($paramName)
{
return $this->getContainer()->getParameter($paramName);
} |
Ahmed.