我正在为我的雇主做一个小型内部网站点。此时我是唯一的开发人员。 (对他们来说有祸了。)我仍然非常喜欢网络开发。
我正在使用NetBeans作为“服务器”(最终使用EasyPHP)运行此站点的开发版本。当我在NetBeans中运行项目时,浏览器的站点根目录为“localhost:8000”或任何端口。那里没有错。当我尝试通过EasyPHP直接运行它时,它有“别名”,它指向我的硬盘驱动器上的指定目录作为站点根目录,因此浏览器会说“127.0.0.1/Intranet/”作为站点根目录。不幸的是,这会以多种方式打破一切。首先,我获取网站根的方式:
define('WEB_ROOT', filter_input(INPUT_SERVER, 'DOCUMENT_ROOT');
define('SOURCE_ROOT', dirname(WEB_ROOT);
WEB_ROOT
最终指向安装了EasyPHP的目录,而不是该网站所在的目录,因此其中包含WEB_ROOT
的任何包含都会中断。相反,还有一个名为'CONTEXT_DOCUMENT_ROOT'
的$ _SERVER键指向正确的位置。好的,很容易测试该密钥isset()
并使用它,如果是,但是,我的css和javascript文件的链接被破坏了,因为它们在我的代码中链接了/js.js
领先的斜线。我认为领先的/
会自动指向网站根目录,但它似乎指向浏览器中的根,因为控制台说它无法找到“127.0.0.1/js.js”应该一直在寻找“127.0.0.1/Intranet/js.js”。
这有什么意义吗?领先的斜线实际上做了什么?我应该用我的WEB_ROOT常量链接我的css和js吗?我不想用相对路径来做,因为(此时)这个站点中有很多目录和子目录,其中任何一个都需要找到WEB_ROOT / js.js或style.css。
虽然prod版本正在运行(它在不同的计算机上使用不同的服务器软件),但这些错误让我觉得我做错了。有什么想法吗?
谢谢!
PS。 This question的答案在某种程度上说明了我的问题,但我想知道是否有人能够进一步解释正斜线。