Bonjour,

je travaille actuellement sur le Tutoriel Vidéo PHP : Développer un site : Jour 2, La structure PHP.

Mes fichiers .htaccess fonctionnent correctement, j'arrive à accéder aux info Array mais pas de PATH_INFO.
Je précise que j'ai parcouru de nombreux sujet sur cette question sur se forum mais malgrés toutes les informations impossible de régler le problème.

Dans le fichier httpd.conf d'apache j'ai décommenter

Load Module rewrite_module/mod_rewrite.so

Dans le fichier php.ini j'ai mis

short open tag ON
allow url fopen ON,

j'ai activer le php_curl.

;cgi.fix_pathinfo=0 /avant
cgi.fix_pathinfo=1 /après

J'ai rajouter AcceptPathInfo On toute à la fin du fichier httpd.conf

j'ai redémarrer WAMP, et pas de signe de vie de PATH_INFO

j'ai essayé de trafiquer certains options :

Options FollowSymLinks
AcceptPathInfo On
AllowOverride None
Order deny,allow
Deny from all

Il y'a une technique qui permet de contourner le problème ce que j'ai fait dans un premier temps et qui a marcher mais par la suite du tutoriel les choses se compliques et plus rien ne fonctionne...

Une des techniques : $req = str_replace(BASE_URI."/", "", $_SERVER'REQUEST_URI']);

Donc au final j'ai toute les options que je veux sauf PATH_INFO...
Après une journée de recherche infructueuse sur Google, Grafikart, le SiteduZero.. et d'autres je craque..

Si quelqu'un aurait une solution, je suis tout ouïe.

Bien cordialement.

3 réponses


As tu mis les informations nécessaires dans ton url ? par exemple : www.nomdusite/controller/action Le PATH INFO récupère les arguments fourni dans ton url

christ
Auteur

Mon url est bien www/blog/view/index, sur Google Chrome : localhost/blog/view/index quand je fais un écho

Dispatcher :

<?php

class Dispatcher{

var $request;

function __construct(){
$this->request = new Request();
echo $this->request->url;
}
}

Request : (Obligé de modifier le code pour obtenir l'url car le PATH_INFO ne marche pas).

<?php

class Request{

public $url; //url URL appellé par l'utilisateur

function __construct(){
// echo $this->url = $_SERVER'PATH_INFO']; j'ai essayé ça, sa me donne error Notice: Undefined index: PATH_INFO in C:\wamp\www\blog\core\request.php on line 8
//echo $this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:''; ça ne me donne pas l'url mais une page blanche.
// $this->url = $_SERVER'SCRIPT_NAME']; Là ça marche ça me donne : blog/webroot/index.php mais ça ne me donne pas blog/view/index.php.

}
}

Il y'a aussi quelque chose qui me chiffonne, dans la video Développer un site Jour 2 à 19:35, Grafikart obtient : pages/view/index,
mais il n'a a aucun moment crée un fichier pages et quand on vois ses dossiers il n'en a pas.

Donc je ne sais pas comment obtenir view/index ou pages/view/index.

christ
Auteur

Bon j'ai trouver une solution,

$req = $_SERVER'REQUEST_URI'];
echo $req = str_replace(BASE_URL , "" , $req );
dans mon Request.

Je récupère bien /view/index sur la page localhost/blog/view/index
Normalement on doit utiliser le PATH_INFO, je ne comprend vraiment pas pourquoi il n'est pas disponible sur Wamp Server 2.1.
J'ai essayé de continuer avec le fichier Router.php

<?php
class Router{
/**
* Permet de parser une url
* @param $url URL à parser
* @return tableau contenant les paramètres
*
**/
static function parse($url){
$params = explode('/',$url);
print_r($params);
}
}

Mais j'obtient : /view/indexArray ( [0] => )

Sur la video grafikart obtient : Array ([0]=>[1]=>pages[2]=>view[3] => index )

Donc vu que je n'est pas le dossier pages, je devrais obtenir : Array ([0]=>[1]=> view[2] => index )

Je vais essayer de regarder les postes sur le forum concernant se sujet, je pense quand même que mon problème viens du PATH_INFO car je fais la même chose que sur la vidéo.