bonjour a tous,
je suis en train de suivre voter tuto sur "faire un site en 6 jours".
Ma base de données est crée et je flanche deja...
voici l'erreur que me donne wanp:
il me trouve une erreur en ligne 8 de mon index.php. J'ai beau controlé et le texte est identique au tuto ?
voici le script:
<?php
define('WEBROOT',dirname(__FILE__));
define('ROOT',dirname(WEBROOT));
define('DS',DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define('BASE_URL',dirname(dirname($_SERVER'SCRIPT_NAME'])));
require CORE.DS.'includes.php';
new dispatcher();
?>
la ligne 8 est :
require CORE.DS.'includes.php';
quelqu'un serait-il pourquoi ce message?
merci de votre aide
Neuillane
Bonjour,
Dans Request.php, change la ligne concernant le <u>PATH_INFO</u> par $this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/';
Je pense que ton serveur n'a pas de PATH_INFO. Si la solution ci-dessus ne fonctionne pas, je te conseil de chercher un équivalence :
<pre>
<?php print_r($_SERVER); ?>
</pre>
Bonne chance.
Cordialement,
Ramz.
Pour le PATH il faut remplacer :
$this->url = $_SERVER'PATH_INFO'];
//par
$this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/';
bon cela ne fonctionne pas.
Voila ce que j'ai dans mon WWW:
et voici mes 3 fichiers et leurs codes:
Request.php:
<?php
class Request{
public $url; // URL appelé par l'utilisateur
function __construct(){
$this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/';
}
}
?>
includes.php:
<?php
require 'Request.php';
requipe 'dispatcher.php';
?>
et dispatcher.php:
<?php
class new dispatcher
var $request;
function __construct(){
$this->request = new Request();
$this->request = new Request();
}
}
?>
Mais j'ai les memes messages d'erreurs?
Pourtant j'ai bien suivi le tuto, comprend pas?
<?php
require 'Request.php';
requipe 'dispatcher.php';
?>
Ligne 3, tu as marqué requipe au lieu de require.
Je me demande finalement si ce n'est pas un probleme de wamp? j'ai tapé l'adresse :
http://localhost/tuto/webroot/css/style.css
et voila ce qu'il me met au lieu d'une page blanche?
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
pourtant j'ai bien creer un fichier tuto dans le www puis dans le fichier tuto j'ai crée les 5 autres fichiers ainsi que le .htaccess?
je ne vois pas?
RewriteEngine On
RewriteRule (.*) webroot/index.php
cela correspond à la 8eme minute du tuto phases 2
Salut,
tu as oublié de mettre a la fin de ta règle le $1, et le flag [L] qui indique que c'est la dernière règle a utilisé
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
aussi au niveau de ton dossier webroot/ ajouter un autre fichier .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]
voila.
bon, j'ai tout effaçé pour recommencer. Lorsque je n'ai rien dans mon dossier www, voila ce que cela me donne:
ensuite j'y cree mes fichiers(sans index.php et .htaccess :
j'y cree index.php(que j'ai directement mis dans webroot), .htaccess dans le fichier racine et .htaccess dans fichier weebrot et je cree mon style.css dans le fichier css (qui est dans le fichier webroot) et lance http://localhost/webroot/css/style.css, voila le resultat:
je n'ai que 3 fichiers:
.htaccess du fichier racine :
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
.htaccess dans le fichier webroot :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
et l'index.php vierge pour l'instant" dans le fichier webroot aussi?
je suppose que l'adresse appelée est la bonne => http://localhost/webroot/css/style.css ? alors pourquoi je n'obtiens pas le meme resultat que dans le tuto? (mon encodage est en UTF-8)
desolé de vous derangez mais je suis sur qu'une fois ce probleme reglé, la suite du tuto se passera mieux...
neuillane
Bonjour
Ton fichier htacces à la racine du site redirige toute les adresse du style http://localhost/qqch vers http://localhost/webroot/qqch
Donc quand tu demandes http://localhost/webroot/css/style.css il va chercher http://localhost/webroot/webroot/css/style.css.
En regardant le fichier error.log d'apache tu dois pouvoir voir quel est la page qu'il tente d'afficher
voila ce qu'il me met dans son fichier lorsque je tape http://localhost/webroot/css/style.css
[Sat Sep 29 17:23:03 2012] [alert] [client 127.0.0.1] C:/wamp/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Donc je dois demander quelle adresse? tous mes fichiers sont dans le www. donc http://localhost/css/style.css ou http://localhost/index.php devrait fonctionner comme dans le tuto? Mais j'ai toujours la meme erreur. J'ai fait les memes codes , je les ai mis dans les memes fichiers mais ça ne marche pas pour moi? WAMP est bien local donc il accepte tous les php? (je m'explique, il n'est pas comme free qui refuse php5 sauf si on le force)?
Le probleme est dans mon MVC donc je ne peux pas attaquer le site si celui-ci ne fonctionne pas?
bon, je vais refaire le tuto depuis le debut en esperant que je ne trouve plus la meme erreur....
Bonjour,
Tu dois activer le rewrite_module. Pour ce faire,
Clique gauche sur l'icône de WAMP > Apache > Modules Apache > active rewrite_module
Bonne chance à toi.
Cordialement,
Ramz.
ça marche.... je te remercie Ramz1994. C'etait juste une option de WAMP.
Super je peux continuer le tuto...
Encore merci
bon maintenant je bloque à la 19 minutes et 30 secondes (pour etre precis). Voici l'erreur donnée :
et voici mon script Dispatcher.php :
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
echo $this->request->url;
}
}
?>
l'adresse n'apparait pas et au lieu de cela , j'ai un message d'erreur? Savez-vous d'ou ça peut venir?
merci de votre aide
Neuillane
bon maintenant wamp me donne un message d'erreur à la 29eme minutes.
Dispatcher.php:
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadcontroller();
$controller->view();
}
function loadController(){
$name = ucfirst($this->request->controller).'controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
$controller = new $name($this->request);
}
}
?>
il me dit qu'il y a une erreur à la ligne 17 donc à : require $file;
ça marchait bien avant et la plus rien????
quelqu'un sait pourquoi?
Bonjour,
J'apporte deux hypothèses à ton problème.
PS : tu verras comment éviter ce type d'erreur dans les suites du tutoriel. :)
N'oublis pas la majuscule. Je doute que ça soit vraiment le problème mais c'est quand même à éviter afin de bien comprendre ton code.
Pour t'expliquer ce que fait la variable $name
ucfirst($this->request->controller) : le <u>controller</u> que tu as appelé dans ton url(exemple : http://localhost:8080/SiteWeb/<u>pages</u>/index) suivi de .'Controller' qui te donne PagesController.
Par la suite, à l'aide de $file nous allons chercher le chemin d'accès ROOT/controller/PagesController.php pour ensuite l'inclure.
J'espère t'avoir éclairé, bonne chance. :)
Cordialement,
Ramz.
bon, dans ma racine , voici mes dossiers :
dans dans mon fichier controller, j'y ai cree le pagescontroller.php avec à l'interieur :
<?php
class pagescontroller extends Controller{
function view(){
echo 'vous voyez ?';
}
}
?>
tout va bien jusqu'a l'exemple qui me mets cette erreur?
je remet le code du Dispatcher.php :
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadcontroller();
$controller->view();
}
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
$controller = new $name($this->request);
}
}
?>
je ne vois reellement pas?
j'ai cette erreur :
Failed opening required 'C:\wamp\www\controller\Controller.php' (include_path='.;C:\php\pear') in C:\wamp\www\core\Dispatcher.php on
elle veut bien dire qu'elle en trouve pas le fichier Controller.php dans le dossier controller? Mon fichier Controller.php est dans le fichier core.... dans le dossier controller, je n'ai pour l'instant que le fichier Pagescontroller.php. Je ne pense pas m'etre trompé?
J'espere que ce n'est pas wamp qui deconne...
si ça peut aider quelqu'un , voici les erreurs trouvés dans "apache error log:
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP Warning: require(C:\wamp\www\controller\Controller.php) <a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in C:\wamp\www\core\Dispatcher.php on line 16
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP Stack trace:
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 1. {main}() C:\wamp\www\webroot\index.php:0
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 2. Dispatcher->__construct() C:\wamp\www\webroot\index.php:9
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 3. Dispatcher->loadController() C:\wamp\www\core\Dispatcher.php:9
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP Fatal error: require() <a href='function.require'>function.require</a>]: Failed opening required 'C:\wamp\www\controller\Controller.php' (include_path='.;C:\php\pear') in C:\wamp\www\core\Dispatcher.php on line 16
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP Stack trace:
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 1. {main}() C:\wamp\www\webroot\index.php:0
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 2. Dispatcher->__construct() C:\wamp\www\webroot\index.php:9
[Thu Oct 18 08:10:49 2012] [error] [client 127.0.0.1] PHP 3. Dispatcher->loadController() C:\wamp\www\core\Dispatcher.php:9
Pour l'instant je ne peux plus avancer. Peut-etre est-ce encore une fonctionnalité de wamp qui n'est pas activée?
apres de multiples recherche sur le forum (et l'erreur est trés frequente), j'ai fait comme sur ici.
J'ai mis un texte dans le fichier index.php avant le <?php .
Le texte s'affiche mais j'ai toujours une erreur, je pense que l'erreur est normale et que je peux continuer le tuto?