Bonjour,
J'ai suivi le tutoriel en 7 étapes. Le concept MVC la POO ça va c'est passé ;-) Mais le rewriting/routing et les regex c'est pas bien ça...
En local , que ce soit sous wampserver W7 ou xampp Debian tout fonctionne. En voulant tester sur un hébergement (mutualisé Free-h.org) avec Rewrite qui fonctionne et une version php5.3x (un site y tourne déjà, je comptais le passer en MVC POO), Imposible d'aller au-delà de l'accueil... Au survol des liens on voit que c'est mal formaté (http://pages/index par ex sans le ND) et une erreur No Input File Device à chaque clic. J'ai vu qu'un sujet est déjà ouvert pour ce type d'erreur mais pas chez free-h.org (qui loue ses serveurs chez Ovh).
Si jamais quelqu'un avait une idée...

10 réponses


JoeMugen
Réponse acceptée

Si tu es sur du mutualisé, il y a de grande chance pour que php ne fonctionne pas en mod_php (avec l'utilisateur apache) mais en CGI ou FCGID (en tant que propriétaire du virtual server). J'vais pas rentrer dans les détails mais en gros soit tu peux modifier la manière dont php fonctionne. Soit tu t'adaptes.

Essaie avec:

RewriteRule (.*) index.php?/$1 [L]

plutôt que

RewriteRule (.*) index.php/$1 [L]

Le problème est tjrs le même Base_URL contient juste '/' vu que tu es à la racine et l'url généré et /pages/index

Donc quand le router génère l'url ça fait //pages/index

Donc faire un trim et supprimer le / initial de l'url générée devrait résoudre le pb.

eXtenz
Auteur

@ Grafikart, merci de proposer une solution. Mais toujours au même point. J'ai pensé à une erreur de code donc j'ai testé en mettant les sources , même pb, l'url n'est pas formatée correctement. il manque le nom de domaine. Au départ je n'étais pas à la racine mais dans un dossier de test. Là l'url était correctement formée (http://www.domaine.fr/pages/index) mais No input file specified.
C'est à la racine que ça se gâte (pages/untel-1). par contre la methode ::Webroot fonctionne pour inclusion css et img.
Je sais pas ...

Le code du tuto contient cette erreur fait ce que je t'ai dit ça corrigera le pb tu verras :) (faut éviter le // en début d'url :) )

eXtenz
Auteur

Arrf ! je suis en mode bug ! Tu parles de faire un trim sur $url avant le return dans Router.php?

/**
    * Permet de générer une url à partir d'une url originale
    * controller/action(/:param/:param/:param...)
    **/
    static function url($url = ''){
        trim($url,'/'); 
        foreach(self::$routes as $v){
            if(preg_match($v'originreg'],$url,$match)){
                $url = $v'redir']; 
                foreach($match as $k=>$w){
                    $url = str_replace(":$k:",$w,$url); 
                }
            }
        }
        foreach(self::$prefixes as $k=>$v){
            if(strpos($url,$v) === 0){
                $url = str_replace($v,$k,$url); 
            }
        }

        return BASE_URL.'/'.$url; 
                //!! Si je met simplement return BASE_URL.$url alors lien bien formaté  
                 http://www.lecresto.fr/page/accueil-1 !! 
                 Mais erreur input file etc ... !/\#@?!/§!ø~&! //
    }
    static function webroot($url){
        trim($url, '/');
        return BASE_URL.'/'.$url; 

    }

Bref je bug je capte plus je pensais que trim au debut c'était bon.

dans la fonction url tu as :
return BASE_URL.'/'.$url;

enlève le /

eXtenz
Auteur

Oui, c'est ce que j'ai fait déjà, mais toujours "no input file specified". Cake fonctionne d'ailleurs. Je pige pas. Il doit y avoir un truc bien invisible.

Bonsoir je rencontre le même souci que extenz.
J'ai fait ce que tu as dis grafikart mais j'ai toujours le même message.
Est ce que le fait que php soit en cgi peut avoir un impact ?

Bonjour,

j'ai exactement le même problème avez-vous résolu la chose?

Cordialement.

Avant tout, il faut voir comment vous faîtes tourner votre php (mod_php, FastCGI, php-FPM, etc...).
Ensuite il faut qu'on voit qu'est ce que retourne:

$_SERVER'REQUEST_URI']

et

$_SERVER'PATH_INFO']