Mon application PHP ne fonctionne pas car $ _SERVER [‘REQUEST_URI’] renvoie l’URL complète au script au lieu d’un chemin relatif.
Mon environnement:
Windows 7 64 bits.
XAMPP Version 1.8.2
PHP version 5.4.16
Apache Version Apache / 2.4.4 (Win32) OpenSSL / 0.9.8y PHP / 5.4.16
Mon hôte virtuel Conf:
DocumentRoot "D:/HTDOCS/ivankristianto" ServerName www.ivankristianto.local UseCanonicalName Off Options Indexes FollowSymLinks MultiViews AllowOverride all Require all granted
J’ai créé un script de base pour tester le contenu de $ _SERVER:
echo '$_SERVER[\'HTTP_HOST\'] : ' . $_SERVER['HTTP_HOST']; echo '
' . '$_SERVER[\'PHP_SELF\'] : ' . $_SERVER['PHP_SELF']; echo '
' . '$_SERVER[\'REQUEST_URI\'] : ' . $_SERVER['REQUEST_URI'];
Et voici le résultat:
// URL: http://localhost/ivankristianto/request.php $_SERVER['HTTP_HOST'] : localhost $_SERVER['PHP_SELF'] : /ivankristianto/request.php $_SERVER['REQUEST_URI'] : /ivankristianto/request.php //This is correct
Et
// URL: http://www.ivankristianto.local/request.php $_SERVER['HTTP_HOST'] : www.ivankristianto.local $_SERVER['PHP_SELF'] : /request.php $_SERVER['REQUEST_URI'] : http://www.ivankristianto.local/request.php //This is wrong
Je n’ai pas utilisé de proxy, tout ce que j’ai fait est de le définir dans mes fichiers / etc / hosts.
J’ai passé des heures à découvrir pourquoi cela se produit et j’ai effectué une recherche via Google et ce site Web, mais je ne trouve aucun indice.
Pouvez-vous m’indiquer ce qui ne va pas?
Merci.
Ivan
Je pense que vous recevez l’effet souhaité de la création d’un hôte virtuel:
Aucun hôte virtuel:
/ivankristianto/request.php
Avec l’ hôte virtuel:
http://www.ivankristianto.local/request.php
http://www.ivankristianto.local
– Je pense que cela vous semble faux car il contient http://www
et .local
– vous pouvez changer cela en invankristano
et votre REQUEST_URI
affichera le même résultat que si vous n’aviez pas d’hôte virtuel . Il représente le chemin d’access à votre request.php – que vous avez défini dans le fichier hosts et fait donc partie intégrante de l’URI.
Donc, fondamentalement, ce que je dis, c’est qu’il n’y a rien de mal.
Si cela vous pose problème, une solution consisterait à déterminer quel environnement vous vous trouvez, par exemple
if($_SERVER['HTTP_HOST'] == 'www.ivankristianto.local') { $dev_env = TRUE; }else { $dev_env = FALSE; }
alors quelque part utiliser cela:
if($dev_env) { $_SERVER['REQUEST_URI'] = str_replace($_SERVER['HTTP_HOST'],'',$_SERVER['REQUEST_URI']); }
mettre à jour
essayez de changer d’hôte conf à:
DocumentRoot "D:/HTDOCS/ivankristianto" ServerName ivankristianto.local UseCanonicalName Off Options Indexes FollowSymLinks MultiViews AllowOverride all Require all granted
(supprimer www. de nom_serveur)
J’ai finalement réussi à le faire fonctionner.
Voici les étapes que j’ai suivies (je ne sais pas pourquoi cela se produit, mais cela fonctionne maintenant).
Et ça marche en quelque sorte.
Honnêtement, je ne sais pas pourquoi cela fonctionne, mais si quelqu’un tombe sur le même problème, j’espère que la solution pourrait aider.
Eu le même problème récemment,
Ma solution:
Vérifiez tout d’abord si votre http: // localhost a le même effet.
Sinon, ajoutez votre hôte virtuel (domaines) au fichier / etc / host.
J’espère que c’est utile.