2013-04-01 2 views
0

Я занимаюсь разработкой сайта на своем местном стеке. Я создал псевдоним для просмотра сайта, поэтому я перехожу к localhost/eee/ для его просмотра. В идеале я хотел бы перейти на www.eee.lo, но с момента его обновления до win8 я не могу заставить его работать.php include with wamp

Так что это проблема, я создаю модули для веб-сайта, поэтому мне не нужно менять весь код и т. Д. И я не хочу, чтобы обойти меня, меняя все URL-адреса, когда я перейдите на онлайн-сервер, поэтому я создаю файл с именем _control.php который имеет это;

$_SITELOC = "localhost/eee/"; 

И затем каждый раз, когда я хочу включить файл, я пойду;

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

Но это не работает, и я не могу понять, почему, как если бы я echo его, а не include его, а затем я беру то, что он печатает, и поместить его в URL он идет к нужному файлу. Но он вызывает ошибки в include, он дает два предупреждения;

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 

Я где-то читал, что это может быть связано с включением пути, поэтому я попытался;

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

но это тоже не сработало, и теперь я не уверен, куда идти.

Спасибо, Крис

+0

Если вы включаете файл через URL-адрес, который не включает исходный код PHP, вы выполняете файл и включаете его результаты. Это то, что вы действительно намереваетесь? –

ответ

2

localhost/eee/ Ваш общедоступный адрес, который вы можете использовать в своем веб-браузере. Этот публичный адрес должен быть соответствующим образом написан как http://localhost/eee/. Когда вы переходите на веб-сервер, вы получаете общедоступный адрес http://www.eee.lo/.

При включении файлов вы должны использовать пути к файлам. Например, если у вас есть ваша директория www (или httpd, whatever) в D:\ на окнах, то ваш путь включения должен начинаться с D:\www\eee\.

Итак, в основном вы должны использовать две переменные для сохранения путей.

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

На практике, вы будете нуждаться в обоих из них, и это хорошая практика, чтобы сохранить адрес веб-сайта и внутренние пути из основного сценария, потому что при загрузке на удаленный сервер, а не только ваши общедоступные изменения адреса, но вам также придется иметь дело с совершенно разными внутренними (включенными) путями.

+0

спасибо, все хорошо сейчас – ChrisBull

-1

Если вас include() URL-адрес, вы (вероятно) будет в том числе выход исполнения скрипта, если вы хотите включить источник скрипта. Похоже, вы действительно хотите включить путь локальной файловой системы.

+1

Вы * можете * указать URL-адрес (хотя в URL-адресах OP отсутствует префикс протокола). –

+0

Если вы включите его по URL-адресу, вы будете включать вывод выполнения файла, а не источник. – Adrian

+0

Конечно, вы можете включить URL-адрес, см. Примеры http://php.net/manual/en/function.include.php – Havelock

1

Ваша идея в основном хороша, чтобы определить один (корневой) путь приложения и включить в него файлы на основе этого, но, к сожалению, вы не делаете это совершенно правильно. У вас есть два способа сделать это.
Один из способов (который я лично считаю, лучше), чтобы включить локальные файлы в файловой системе, где вы можете определить корневой путь, т.е. как

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

Другой способ будет включать в себя веб-ресурс, то, вы пытаетесь сделать, но вы забыли указать схему (протокол), который вы хотите использовать, то есть

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

для получения дополнительной информации, смотрите примеры, предусмотренный documentation for include
Примечания: Если вы хотите укажите источник файла php, то есть файл с определениями функций и т. д., используйте первый подход. Включение файлов, используя второй подход, будет включать только вывод, созданный этим файлом.

+0

Включая удаленно (если разбор PHP не отключен) будет включать вывод выполнения сценария, а не источник сценария. – Adrian