2013-04-01 8 views
0

Je développe un site sur ma pile de wamp locale. J'ai créé un alias pour voir le site, donc je vais au localhost/eee/ pour le voir. Idéalement, je voudrais aller à www.eee.lo mais depuis la mise à niveau vers win8 je ne peux pas le faire fonctionner.php include avec wamp

Donc, c'est le problème, je fais des modules pour le site web, donc je ne dois pas changer tout le code etc ... Et je ne veux pas avoir à faire le tour de changer toutes les URL quand je migrer vers le serveur en ligne donc je crée un fichier appelé _control.php qui a ceci;

$_SITELOC = "localhost/eee/"; 

Et puis chaque fois que je veux inclure un fichier je vais y aller;

include "$_SITELOC/scripts/inc/_header.php"; 

Mais cela ne fonctionne pas et je ne peux pas comprendre pourquoi, comme si je echo plutôt que include, puis je prends ce qu'il imprime et le mettre dans l'URL, il va au fichier correct. Mais il jette des erreurs sur l'inclus, il donne deux warnins;

Warning: include(localhost/eee/scripts/inc/_header.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in C:\Users\Chris\Documents\EEE\Website\Site\index.php on line 3 

Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'localhost/eee/scripts/inc/_header.php' for inclusion (include_path='.;C:\php\pear') in C:\Users\Chris\Documents\EEE\Website\Site\index.php on line 3 

J'ai lu quelque part que cela pourrait être à faire avec le chemin d'inclusion, donc j'ai essayé;

set_include_path(get_include_path() . PATH_SEPARATOR . $_SITELOC."/scripts/inc/"); 

mais cela aussi n'a pas fonctionné et maintenant je ne sais pas où aller.

Merci, Chris

+0

Si vous incluez un fichier dans une URL, vous n'incluez pas le code source PHP, vous exécutez le fichier et ses résultats. Est-ce ce que vous avez vraiment l'intention? –

Répondre

2

localhost/eee/ est votre adresse publique que vous pouvez utiliser dans votre navigateur Web. Cette adresse publique devrait plus vraisemblablement être écrite . Lorsque vous passez au serveur Web, vous obtenez l'adresse publique http://www.eee.lo/. Lorsque vous incluez des fichiers, vous devez utiliser des chemins de fichier. Par exemple, si vous avez votre directrice www (ou httpd, quel que soit) dans D:\ sur Windows, alors votre chemin d'inclusion doit commencer par D:\www\eee\.Donc, en gros, vous devez utiliser deux variables pour garder les chemins.

$_SITELOC = "http://localhost/eee/"; //For all URLs used in your HTML document. 
$_INCPATH = "D:\www\eee\\"; //For all internal file includes. 

Dans la pratique, vous aurez besoin à la fois de ceux-ci, et il est bon de garder l'adresse du site et des chemins internes de votre script principal parce que quand téléchargé vers le serveur distant, non seulement vos changements d'adresse publique, mais vous devrez également faire face à des chemins internes (inclus) absolument différents.

+0

merci, tout va bien maintenant – ChrisBull

-1

Si vous include() une URL, vous allez (probablement) y compris la sortie de l'exécution du script, lorsque vous voulez inclure la source du script. Il semble que vous vouliez réellement inclure par le chemin du système de fichiers local.

+1

Vous pouvez * inclure * une URL (bien que le préfixe de protocole manque dans les URL de l'OP). –

+0

Si vous l'incluez par URL, vous inclurez la sortie de l'exécution du fichier, pas la source. – Adrian

+0

Bien sûr, vous pouvez inclure une URL, voir les exemples http://php.net/manual/fr/function.include.php – Havelock

1

Votre idée est fondamentalement bonne, pour définir un chemin (racine) de l'application et inclure des fichiers basés dessus, mais malheureusement vous ne le faites pas tout à fait correctement. Vous avez essentiellement deux façons de le faire.
Une façon (que je trouve personnellement mieux) est d'inclure des fichiers locaux dans votre système de fichiers, où vous pouvez définir le chemin de la racine, à savoir comme

define ('ROOT', 'your/document/root/path'); 
// and then include the files 
include ROOT . '/' . '/scripts/inc/_header.php'; 

L'autre façon serait d'inclure une ressource Web, ce vous essayez de le faire, mais vous avez oublié de spécifier le système (protocole) que vous souhaitez utiliser, par exemple

define ('ROOT', 'http://localhost/eee'); 
// and then include the files 
include ROOT . '/' . '/scripts/inc/_header.php'; 

pour plus d'informations, consultez les exemples fournis par le documentation for include
note: Si vous voulez dans clude la source d'un fichier php, c'est-à-dire un fichier avec des définitions de fonctions, etc., utilisez la première approche. Y compris les fichiers, en utilisant la deuxième approche inclura seulement la sortie produite par ce fichier.

+0

Y compris à distance (sauf si l'analyse PHP est désactivée) inclura la sortie de l'exécution du script, pas la source du script. – Adrian