我所知,基本上就是这样。我可以包含或require_once一个没有包含/require_once的脚本,但如果它有,那么 PHP 会给我抛出这个错误:
警告:require_once(./constants/constants.php) [function.require-once]:无法打开流:C:''Home''Workspace''PHP''DD''src''log''test.php 第 7 行中没有这样的文件或目录
致命错误:require_once() [函数要求]:需要打开失败"../常量/常量.php' (include_path='.;C:''Program Files''Xampp 1.7.7''php''PEAR') 在 C:''Home''Workspace''PHP''DD''src''log''test.php 第 7 行
路径正确。我担心我可能搞砸了Apache Web服务器的一些配置文件(我创建了一个.htaccess文件来使用mod_rewrite以创建一些更好的URL)。.htaccess文件内容就是这样:
选项 +关注符号链接
重写引擎开启
重写规则!(gif|jpg|png|css)$ index.php
我的 apache 文档根目录是"C:/Home/Workspace/PHP"
更新:我发现使用绝对路径有效,如下所示:
require_once _SERVER['DOCUMENT_ROOT']。/DD/src/constants/constants.php";
我想我不会使用相对路径,然后。
这样做的原因是相对路径来自具有第一个要求/包含的文件。例如,如果我有一组看起来像这样的文件:
|--bar
| |--foo
| | |--foo.php
| |--bar.php
|--test.php
如果测试.php有
require("./bar/bar.php")
和酒吧.php有
require("./foo/foo.php")
然后,这将失败,因为相对 URL 必须相对于工作目录(调用 require/include 的顶部文件)。如果我将 bar.php 更改为 require("./bar/foo/foo.php")
则程序将成功完成。正如Basti所说,确保这种情况不会发生的最佳方法是不要使用相对URL。通常建议使用各种函数(如 dirname(__FILE__)
)来构造 URL。
最后一件事,.htaccess文件中的重写规则不会做任何事情,它只会操纵客户端URL。我希望这能消除任何困惑。