0

我正在本地 wamp 堆栈上开发一个站点。我创建了一个别名来查看该站点,所以我去localhost/eee/查看它。理想情况下,我想去,www.eee.lo但自从升级到 win8 后,我无法让它工作。

所以这就是问题所在,我正在为网站制作模块,所以我不必更改所有代码等......而且当我迁移到在线时,我不想四处更改所有 url服务器,所以我正在创建一个名为_control.php它的文件;

$_SITELOC = "localhost/eee/";

然后每次我想包含一个文件时,我都会去;

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

但这不起作用,我无法弄清楚为什么好像我echo是它而不是include它,然后我把它打印出来的东西放到它进入正确文件的 url 中。但是它会在包含时引发错误,它会给出两个警告;

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/");

但这也不起作用,现在我不知道该去哪里。

谢谢,克里斯

4

3 回答 3

2

localhost/eee/是您可以在网络浏览器中使用的公共地址。这个公共地址应该写成http://localhost/eee/. 当您移至 Web 服务器时,您将获得公共地址http://www.eee.lo/

包含文件时,您必须使用文件路径。例如,如果您D:\在 Windows 上有 www(或 httpd,等等)目录,那么您的包含路径应​​该以D:\www\eee\.

所以,基本上你必须使用两个变量来保持路径。

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

在实践中,您将需要这两个,并且最好将网站地址和内部路径保留在主脚本之外,因为当上传到远程服务器时,不仅您的公共地址会发生变化,而且您还必须处理完全不同的内部(包含)路径。

于 2013-04-01T15:43:58.030 回答
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';

有关更多信息,请参阅文档中include提供的示例
注意:如果要包含 php 文件的源,即具有函数定义的文件等,请使用第一种方法。包括文件,使用第二种方法将只包括该文件产生的输出。

于 2013-04-01T15:40:25.690 回答
-1

如果您是一个 URL,当您想要包含脚本的include()时,您将(可能)包含脚本执行的输出。似乎您实际上想要包含在本地文件系统路径中。

于 2013-04-01T15:38:37.417 回答