Bonsoir,
Je suis actuellement entrain de suivre le tuto "Développer un site de A à Z".
Je suis arrivé au jour 2 et voilà que j'ai un soucis.
Quand je désire afficher "Vous voyez ?", le serveur me retourne :
Warning: require(/var/www/clients/client1/web1/web/controller/Controller.php): failed to open stream: No such file or directory in /var/www/clients/client1/web1/web/core/Dispatcher.php on line 17
Fatal error: require(): Failed opening required '/var/www/clients/client1/web1/web/controller/Controller.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web1/web/core/Dispatcher.php on line 17
J'ai pas mal cherché, mais malheureusement, je ne trouve aucune solution.
Dispatcher.php :
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request ();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
call_user_func_array(array($controller,$this->request->action),$this->request->params);
}
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
et mon PagesController.php :
class PagesController extends Controller{
function view(){
echo"Vous voyez ?";
}
}
Je vous remercie de l'aide que vous pourrez m'apporter.
Salut Christophe,
Es-tu sure de l'URL utiliser pour afficher ta page?
Celle-ci doit être de la forme
http://localhost/Monsite/pages/view/index
pour que celà lance PagesController...
Bon dèv'
Salut, dans l'url j'ai http://tuto.dev/pages/view/index comme indiqué dans le tuto, mais rien n'y fait. Quand je test sur un autre serveur, cette même URL fonctionne parfaitement.
Bonjour,
Je pense que le problème vient de ta variable $name ou $file.
Essaye de faire un petit var_dump comme ceci :
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request ();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
call_user_func_array(array($controller,$this->request->action),$this->request->params);
}
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
var_dump($name);
$file = ROOT.DS.'controller'.DS.$name.'.php';
var_dump($file);
die();
require $file;
return new $name($this->request);
}
}
Regarde si la première te renvoi le bon nom du contrôleur et la deuxième le bon chemin !
Bonjour,
Ca me retourne
string(10) "Controller" string(59) "/var/www/clients/client1/web1/web/controller/Controller.php"
Bonsoir,
Ta variable ucfirst($this->request->controller) ne retourne rien il devrait te retourner PagesController, en gros ton $this->request n'est pas rempli.
Tu peux faire un debug de $this->request ?
Cordialement
Bonsoir,
Comme dis plus, je tape dans le naviguateur http://tuto.dev/pages/view/index
Le débug de $this->request me retourne [code]Request Object ( [url] => / [controller] => [action] => index [params] => Array ( ) ) [/code]
Salut, çà me retourne :
Warning: require(/var/www/clients/client1/web1/web/controller/Controller.php): failed to open stream: No such file or directory in /var/www/clients/client1/web1/web/core/Dispatcher.php on line 18
Fatal error: require(): Failed opening required '/var/www/clients/client1/web1/web/controller/Controller.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web1/web/core/Dispatcher.php on line 18
Salut Christophe,
Qaund tu dis
Quand je test sur un autre serveur, cette même URL fonctionne parfaitement.
Ca veut dire que tu as tester le code sur un autre serveur et sur l'autre celà fonctionne c'est bien ça?
Est-ce que sur celui que tu utilise actuellement (et avec lequel ça ne marche pas) tu as l'url rewriting d'activer??
Ca peut aussi venir de là car il n'y a pas de raison que, sans le changer, le code marche à un endroit et pas à un autre!
Bon dèv!
Oui, mod-rewrite est bien installé et configuré, sur mon serveur 1 (celui ou le script ne fonctionne pas) j'utilise le panel "ISPConfig" sur mon autre serveur en revanche, je l'ai installé en dur.
Est-ce que cela pourrait venir de la configuration du au ISPConfig ?
Bonjour,
As-tu acces via ssh ou console à ton serveur ?
Si c'est le cas essaye cette commande ça devrait fonctionner
sudo a2enmod rewrite
Un an plus tard ...
Même problème, mais après quelques var_dump, je me rend compte que sur mon serveur $_SERVER['PATH_INFO'] est devenu $_SERVER['ORIG_PATH_INFO']