Bonjour à tous,
Je suis en train de suivre le tuto développer un site, jour 2 et j'ai déjà des soucis. ^^
J'ai créer mes fichiers htacces en rajoutant à la racine ce code :
RewriteEngine On
RewriteBase /
RewriteRule (.*) index.php [L]
Puis dans le second htacces du webroot j'ai bien mis celui-ci :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
Cependant au chargement de la page, j'ai ce message :
Not Found
The requested URL /index.php was not found on this server.
J'ai essayé de voir si mon module de rewrite est bien activé et en passant par le terminal, je n'ai pas trouvé le fichier adéquat.
J'ai passé la journée devant du code je sens que la réponse est sous mes yeux mais quelqu'un pourrait il m'aiguiller svp ?
J'ai trouvé la solution. Bon outre le fait que le chemin de redirection vers le fichier n'était pas bon, mon mac ne comprenais pas les '' de .htaccess, je l'ai enregistré sans les côtes ca a de suite mieux marcher. En tout cas merci pour votre aide.
le fichier "core/Controller" est la classe abstraite que tu étends pour tous les controller.
Le plroblème vient de ta fonction "loadController()" ou du "request"
Essaye ça pour débugger :
function loadController() {
$name = ucfirst($this->request->controller);
echo "Nom du controller : ".$name."<br>\n";
$file = ROOT.DS.'Controller'.DS.$name.'Controller.php';
echo "Fichier : ".$file."<br>\n";
echo "<pre>";
var_dump($this->request);
exit;
require $file;
return new $name($this->request);
}
Je présume que le nom du controller est vide ! A toi de trouver en relisant ton code d'où vient ce petit soucis.
Utilises la fonction "var_dump()" pour t'aider à débugger
Salut,
Si j'ai bien compris, tu as à la racine de ton site le 1er htaccess
puis dans un dossier "webroot" le second htaccess
C'est ça ?
Soit tu fais "pointer" apache directement dans le dossier "webroot" ou alors dans le htaccess racine :
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
Tu as très bien compris matthieuy.
J'ai déjà essayé, et réessayer, mais il me dit toujours :
Not Found
The requested URL /webroot/ was not found on this server.
Cela pourrait il venir de mon serveur ? Je suis sur apache. :/
Il nous faudrait un peu plus d'info pour t'aider !
Ta configuration apache pointe vers quel dossier : la racine, webroot ou autre ?
As tu fais une alias apache ?
Tu es sous Linux ou du WAMP/EasyPHP/... ?
Alors, je débute alors désolée si je ne saisis pas bien vos questions. :/
Oui je suis en local, j'ai un mac avec mamp dessus.
Voici quelques infos que j'ai récupéré sur mon phpinfos:
Server API Apache 2.0 Handler
Configuration File (php.ini) Path /Applications/MAMP/bin/php/php5.5.3/conf
Je ne sais pas si cela répond à vos questions, j'imagine que non. N'hésitez pas à m'aiguiller pour trouver ces infos.
Une alias apache? Je ne sais pas de quoi il s'agit donc j'en conclus que non.
Pour savoir où pointe apache, tu peux mettre dans ton fichier php (avant le phpinfo()) ceci :
echo __DIR__ ; // Attention : 2 underscores avant et après "DIR"
exit;
Une alias apache permet de créer un dossier "virtuel".
Exemple : http://localhost/toto pointe vers un dossier nommé "titi" (et non "toto")
En période de dev/local, tu peux laisser par défaut mais lorsque tu passeras ton projet en production, il est conseillé de pointer vers le "webroot", le reste ne doit pas être accessible hormis par tes scripts php.
Essayes un truc du genre
Arborescence :
/
/.htaccess (fichier racine)
/webroot
/webroot/.htaccess
/webroot/app.php (point d'entrée de ton framework)
Dans ton "/.htaccess" :
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
Dans le "/webroot/.htaccess" :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) app.php/$1 [L]
Dans le fichier /webroot/app.php :
echo "URL : ".$_SERVER'PATH_INFO'];
exit;
Bonjour,
Je viens de finir le tuto 2 et j'ai de nouveau des soucis. :/
J'ai ca comme erreurs :
Warning: require(/Applications/MAMP/htdocs/asptt/Controller/Controller.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/asptt/core/Dispatcher.php on line 29
Ce qui doit venir de ma fonction loadController notamment de mon fichier $file mais je ne vois pas, peut etre pourriez vous m'éclairer. Voici la fonction :
26 function loadController() {
27 $name = ucfirst($this->request->controller).'Controller';
28 $file = ROOT.DS.'Controller'.DS.$name.'.php';
29 require $file;
30 return new $name($this->request);
31
32 }
Deuxième erreur sur cette meme page :
Fatal error: require(): Failed opening required '/Applications/MAMP/htdocs/asptt/Controller/Controller.php' (include_path='.:/Applications/MAMP/bin/php/php5.5.3/lib/php') in /Applications/MAMP/htdocs/asptt/core/Dispatcher.php on line 29
Je ne la comprend pas il me parle de mon path mais je ne comprend pas le rapport...
Autre chose, lorsque je change l'url :
et peut importe ce que je met derrière, (lol, view, test, caca); il me génère "1". Voici le code source:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" type="text/css" href="">
</head>
<body>
1
</body>
</html>
Je n'utilise pas bootstrap (même si je pense que ca n'a pas de rapport). Quelqu'un a-t-il eu le même soucis ? Que me génère-t-il ? Est ce le numéro de ma page ? Page numéro 1 ?
Salut,
j'en déduit que tu as résolu tes problèmes de .htaccess
Question con mais le fichier "'/Applications/MAMP/htdocs/asptt/Controller/Controller.php" existe bien ?
Au vu de ta fonction "loadController()", je pense que tu as un souci en amont :
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'Controller'.DS.$name.'.php';
il semblerait que ton "$this->request->controller" est vide
Débug avec ça après :
var_dump($this->request, $name, $file); exit;
PS : Peux-tu mettre tes extraits de code dans les balises BBcode "code" du forum, c'est plus lisible stp ;)
Oui oui htaccess fonctionne j'ai marqué la réponse, elle apparait en premier il me semble :)
Question loin d'être con car effectivement, mon fichier Controller.php se trouve dans :
"'/Applications/MAMP/htdocs/asptt/Core/Controller.php"
Le debug ne fonctionne pas.
PS : Oui pas de problèmes pour les balises ;)