我正在我的本地wamp堆栈上开发一个站点。我创建了一个别名来查看该网站,因此我转到localhost/eee/
进行查看。理想情况下,我想转到www.eee.lo
,但自升级到win8以来,我无法让它发挥作用。
所以这就是问题所在,我正在为网站制作模块,所以我不需要更改所有代码等...而且我不想在迁移时不得不改变所有的URL到在线服务器所以我正在创建一个名为_control.php
的文件,它有这个;
$_SITELOC = "localhost/eee/";
然后每次我想要包含一个文件我都会去;
include "$_SITELOC/scripts/inc/_header.php";
但是这不起作用,我无法解决为什么好像我echo
而不是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 :(得分:2)
localhost/eee/
是您可以在网络浏览器中使用的公共地址。该公共地址应更恰当地写为http://localhost/eee/
。当您转到Web服务器时,您将获得公共地址http://www.eee.lo/
。
包含文件时,必须使用文件路径。例如,如果您在Windows上的D:\
中拥有www(或httpd,无论如何),那么您的包含路径应该以{{1}}开头。
所以,基本上你必须使用两个变量来保留路径。
D:\www\eee\
在实践中,您将需要这两者,并且最好将网站地址和内部路径保留在主脚本之外,因为当上传到远程服务器时,不仅您的公共地址发生了变化,而且您还会处理完全不同的内部(包含)路径。
答案 1 :(得分: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文件的来源,即包含函数定义的文件等,请使用第一种方法。包含文件,使用第二种方法只包括该文件产生的输出。
答案 2 :(得分:-1)
如果您include()
是一个网址,当您想要包含脚本时,您(可能)会包含脚本执行的输出 < EM>源。看起来你真的想要通过本地文件系统路径包含。