Bonjour la communauté,
J'ai mis en place un système de média conformément au tutoriel sur réaliser un CMS mais j'ai un problème bizare :
Toutes les images venu d'appareil photo numérique ne passe pas. Le probleme ne vient pas de la taille mon hébergeur a son upload_size reglé à 8M et les photos que j'essaye d'uploader sont moins grosse.
Toutes les images quelconque que j'essaye d'uploader passe parfaitement mais des que c'est des photos sortie fraichement d'un appareil photo numérique cela ne fonctionne plus elle mon session flash renvoie le message d'erreur car la variable $succes n'a pas pu être crée.
Si on m'envoie par mail des photos numériques j'arrive à les uploader par la suite sur mon site, mais sinon non. Ça vous dit quelque chose ce problème ?

Je vous met mon media controller au cas où :

<?php
class MediasController extends AppController{
    public $components = array('Img'); 
    function admin_index($post_id){
        if($this->request->is('post')){
            $data = $this->request->data;
            $dir = IMAGES.date('Y');
            if(!file_exists($dir))
                mkdir($dir, 0777);
            $dir .= DS.date('m');
            if(!file_exists($dir))
                mkdir($dir, 0777);  
            $f = explode('.', $data'Media']'file']'name']);
            $ext = '.'.end($f);
            $filename = Inflector::slug(implode('.', array_slice($f,0,-1)),'-');
            //sauvegarde en bdd//////// 
            $succes = $this->Media->save(array(
                'name' => $data'Media']'name'],
                'url' => date('Y').'/'.date('m').'/'.$filename.$ext,
                'post_id' => $post_id
            ));
            if($succes){
                move_uploaded_file($data'Media']'file']'tmp_name'], $dir.DS.$filename.$ext);
                $this->Session->setFlash("Image correctement enregistrée", "notif");
                foreach(Configure::read('Media.formats') as $k=>$v){
                    $prefix = $k;
                    $size = explode('x', $v);
                    $this->Img->crop($dir.DS.$filename.$ext,$dir.DS.$filename.'-'.$prefix.'.jpg',
                        $size[0],$size[1]);
                }
            }else{
                $this->Session->setFlash("L'image n'est pas au bon format !", "notif", array('type' => 'error'));
            }

        }
        $d = array();
        $d'medias'] = $this->Media->find('all', array(
            'conditions' => array('post_id' => $post_id, 'type' => 'image')
            ));
        $d'formats'] = Configure::read('Media.formats');
        $this->layout = "tinymce";
        $this->set($d); 
    }
    function admin_show($id=null,$format = ''){
        $d = array();
        if($this->request->is('post')){
            $this->set($this->request->data'Media']);
            $this->layout = false;
            $this->render('tinymce');
            return;
        }
        if($id){
            $this->Media->id = $id;
            $media = current($this->Media->read());
            $d'src'] = Router::url('/img/'.$media'url'.$format]);
            $d'alt'] = $media'name'];
            $d'class'] = 'alignLeft';
        }else{
            $d = $this->request->query;

        }
        $this->layout = "tinymce"   ;
        $this->set($d);
    }
    function admin_delete($id){
        $this->Media->id = $id;
        $file = $this->Media->field('url');
        unlink(IMAGES.DS.$file);
        $f = explode('.',$file);
        $ext = '.'.end($f);
        $file = implode('.',array_slice($f,0,-1));
        foreach(glob(IMAGES.DS.$file.'_*.jpg') as $v){
            unlink($v);
        }
        $this->Media->delete($id);
        $this->Session->setFlash("Image bien supprimée !", "notif");
        $this->redirect($this->referer());
    }   
}
?>

Merci d'avance

1 réponse


Grafikart
Réponse acceptée

LA fonction crop sature la mémoire à cause du format de l'image pas de solution sur un mutualisé :(