Bonjours tous le monde j'aimreais savoir comment je construit mon url pour acceder a mon site web je suis sur le servur gratuis de www .000webhost.com
quand je met Mon liens ainsi il ne trouve pas
http://dongitech.net63.net/MonSite/page/view/
il n'accede pas au site jai toutes essayer

26 réponses


amr nassimssi
Auteur
Réponse acceptée

Bonsoir l'equipe je voulais partager sa avec vous je viens de faire une decouverte et je pense que sa va vous interesser il s'averre aprés avoir forcer l'affichage des erreurs sur mon serveur que Mr le serveur et je pense le cas de pas male d'hebergeur n'accepte pas le
$_SERVER['PATH_INFO']; pour des raison de sécurité ou je ne sais quoi donc sa marche chez moi en local parfétement car sur mes fichier de configuration le pth info et enable donc voila pourquoi tous block donc si sa marche pas sa implique que dans le request

$this->url = $_SERVER['PATH_INFO'];

ne fonctionne pas c'est pour cella que tous bloc donc je pense la remplacer avec cette ecriture

str_replace($_SERVER['DOCUMENT_ROOT']."/", "", $_SERVER['REQUEST_URI'])

ceci me recupere 
/MonSite/page/index/
puis je fait une extraction
pour récuperer juste /page/index

voila pour resumer
avant c'été comme sa

class Request
{
    public $url; //url appele par lutilisateur

    function __construct()
    {
        $this->url = $_SERVER['PATH_INFO'];

    }
}

aprés

class Request
{
    public $url; //url appele par lutilisateur

    function __construct()
    {
        $l=$_SERVER['REQUEST_URI'];
        $trim= substr($l, 8);//ici /MonSite/page/index
        $this->url = str_replace($_SERVER['DOCUMENT_ROOT']."/", "", $trim); // /page/index

    }
}

voila pour que sa marche j'aurais une question comment je fait pour rendre le 8 assé dynamique genr il calcule tous seul la taille du /MonSite
Merci

/home/a9527404 c'est mon hom root
Fatal error: require() [function.require]: Failed opening required '/home/a9527404/public_html/MonSite/controller/Controller.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/a9527404/public_html/MonSite/core/Dispatcher.php on line 39

D'après l'erreur que tu nous donne, ton site n'arrive pas à charger la page

 /home/a9527404/public_html/MonSite/controller/Controller.php

Et comme le précise l'erreur, il n'arrive pas à ouvrir la page, puisque l'appel de la page se fait via un require() ton script ne va pas plus loin si il n'arrive pas à ouvrir la dite page.

Pour pouvoir t'aider plus facilement peux-tu nous dire si tu utilise un framework, si oui lequel ?
Si non, je te conseil de revoir le code de ton Dispatcher, car c'est à la ligne 39 que se situe le fameux require qui fait tout planter.

Fait attention aux majuscules / minuscules

Bonjoru je n'utilise aucun framework j'ai suivis le tuto de grafikart je me suis arrété au jours 3, je vais publier le code de mon dispatcheur la ligne 39 c'est $file voila comme suit

<?php
    //creation du dispacheur plus sont constructeur

//sont role récupéré l'url et de savoir quoi en faire 

class Dispatcher
{
    var $request; //variable
    function __construct()
    {

        $this->request = new Request();
        Router::parse($this->request->url,$this->request);

        //print_r($this->request );

        //intialisation du controller 
        $controller = $this->loadController();

        if(!in_array($this->request->action,get_class_methods($controller))){
            $this->error('Le controller : '.$this->request->controller.' n\'a pas de méthode nomé :'.$this->request->action); //message d'erreur
        }
        //dynamiser lappel du controller 
        call_user_func_array(array($controller,$this->request->action),$this->request->params);
        //autorender
        $controller->render($this->request->action);
    }

        function error($message){
            $controller = new Controller($this->request);
            $controller->e404($message);
        }

    function loadController()
        {
            $name = ucfirst($this->request->controller).'Controller'; //convention d'ecriture nomController
            $file = ROOT.DS.'controller'.DS.$name.'.php';
            require $file // ligne 39;
            return new $name($this->request);

        }
}

je met le chemain comme je le met dans mon localhost car samarche sur le local host localhost/MonSite/page/index/

Comme l'a dit Graf' vérifie tes noms de fichier, une majuscule/minuscule mal placée pourrait être la cause de ton erreur.

je l'ai verifier vous savez j'ai pas changer grand chose en uploadant sur le ftp jai pris le site tel quell dans mon localhost et je lai mi maintenant esque il pourrait avoir un probléme au niveau du root du site

Une erreur qui arrive souvent lors du passage en prod' (ou sur serveur distant) ce sont les droits de lecture/écriture qui ne sont pas bon.

En local, ton site est en accès complèt (lecture, écriture, exectution) mais ce n'est pas forcèment le cas sur ton serveur distant. Regade de se côté là. En passant tout les fichiers de ton site en 755 tu devraient être bon.

non toujour rien regarde se que sa donne quand je fait sa

http://dongitech.net63.net/

Lorsque je clique su ton lien je constate surtout que tu n'a pas de dosser Monsite, la seule chose qui s'y trouve c'est un dossier anap. Est-ce normal ?

Car si tu cherche à atteindre l'url Monsite/mon-url et que le dossier Monsite n'existe pas, c'est normal qu'il n'affiche rien. De plus, je m'interroge, comment as-tu fais pour avoir affiché cette erreur alors qu'il semble que tu n'ai pas de dossier Monsite de présent ?

J'y pense aussi, est-ce que l'url rewriting est activée sur ton hébergeur ?

jai mi un htaccec a l'interieur du dossier MonSite il contien

RewriteEngine On
RewriteRule (.*) webroot/$1

voila l'erreur ou elle es générer
http://dongitech.net63.net/anap/webroot/

jai un controler page et une action index

Vérifie auprès de ton hébergeur si l'url-rewriting est bien activé.
Revérifie en local que tout fonctionne correctement.
Vérifie bien les droits d'accès de tes fichiers sur ton hébergeur.

Si malgré tout ça, ça ne fonctionne pas, je ne sais pas comment t'aider. Désolé.

Merci tu e as deja fait bcp en tous je suis entrin de chercher comment activer l'url rewriting je trouve pas comme c'est un hebergeur gratuit je l'utilise que pour les testes donc je vais fouiller bien comme il faut et pour les droit jai mit tous dossier sous dossier fichier a 755 en local tous fonctionne correctement je te tiendrais au courant encor merciiiii

Pour l'url-rewriting il faut que tu contact ton hébergeur (via le support par exemple). De ton côté tu ne pourra rien faire.

Bonsoir,

C'est ton $this->request->controller qui ne retourne pas le bon nom de controlleur puisqu'il te met directement le lien :
'/home/a9527404/public_html/anap/controller/Controller.php'

Verifier ta class request ou ta class router , sinon copie les nous

Bonjour

Moi je pense surtout que le problème viens d'une erreur sur les constantes déffinissant l'accès au fichiers ROOT du fichier /webroot/index.php qui normalement devrait contenir quelque chose comme :

<?php
define('WEBROOT',dirname(__FILE__));
define('ROOT', dirname(WEBROOT));
define('DS', DIRECTORY_SEPARATOR);

require(CORE.DS.'includes.php');

new Dispatcher();

c'est ce qu'elle contien exactement ses lignes de code, justement question purement theorique dans un hebergeur lorsque on heberge un site pareil, on doit s'y prendre comment psk on charge pas directement une vue on doit passer par le controller esque on doit pointé en premier lieu vers le fichier index. commnent se fait un hebergement lorsque on va dire

toutes est bon, ps je suit le tuto de cree son site de A a Z j'ai rien changer ou amelioré je joint le lien de mon site regqrder bien que que niveau de webroot j'ai lerreur qui s'affiche
http://dongitech.net63.net/anap/

Met ton code sur GIT ou un truc du genre qu'on puisse le voir la on voit rien

https://mega.co.nz/#!qgwxRJwI!XDbHcdshj8Tye9gty0k4VHLkrez5YIFkZGDRfx43rRA

voila le fichier si tu rajoute la base de donnée n'oublie pas le conf.php d'introduire tes information sur localhose c'est sa le lien
http://localhost/anap/page/index/

Déjà commence pas corriger le constructeur de la classe Request (/core/Request.php) par :

<?php
public function __construct() {
  $this->url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';

  if(!empty($_POST)) {
    $this->data = new stdClass();
    foreach ($_POST as $k => $v) {
      $this->data->$k = $v;
    }
  }
}

Ensuite je te conseil vivement de revoir les tuto de grafikart car il y a de grosses erreur dans ton code.
Par exemple la classe Router il manque la méthode static connect, aucune routes de créer pas même pour la page d'acceuil ...
donc je comprend pas dutout comment cela peut fonctionner correctement en local chez toi car moi rien de vas

j'ai suivisl les trois premier jours du devlopement croi sa marche normale méme sur les videos chez lui tous marche bien tu ne trouve pas les fonction que tu site psk j'ai pas encore fait la partie gestion des routes qui est dans le jours 4 c'est tous mais je vais la faire as tu essyer sur un serveur comment tu as fait pour le faire marcher,

Ah oui possible
en tout cas chez moi c'est bourrer de bug ... j'ai des fatal error a tout va
refait quand meme les 3 premiers jour pour être sur de rien avoir oublier et pour bien comprendre

Oui moi j'ai quasiment le même MVC déployé en prod

oui je vais les refaire la je suis sur le quatrieme jours il ya des modification aporter je vais regler sa et te tenir au courant c'est bizar moi il ne m'affiche aucune erreur as tu integer la base de donnée j'ai mi le fichier sql dans le fichier,
deque je termine pourrait tu me guider pour la mise en production du site, stp? jaimerais aussi pouvoir integrer une news letter je remarque que au niveau des hebergeurs il ont deja des solution toutes faites et prette a l'mploie quesque tu en pense et pourait tu m'orienter vers une methode pour les deployer ? Merci