Mis*_*hko 2 php require include include-path
我有以下文件结构:
temp
main
index.php
a.php
b.php
Run Code Online (Sandbox Code Playgroud)
这是文件;
的index.php
echo "index.php ---> " . __DIR__ . "<br />";
require('../a.php');
echo "OK<br />"
Run Code Online (Sandbox Code Playgroud)
a.php只会
echo "a.php ---> " . __DIR__ . "<br />";
require('./b.php');
echo "a is here<br />"
Run Code Online (Sandbox Code Playgroud)
b.php
echo "b is here<br />"
Run Code Online (Sandbox Code Playgroud)
在index.php
调用时我收到以下错误:
index.php ---> D:\Programs\WampServer 2\www\temp\main
a.php ---> D:\Programs\WampServer 2\www\temp
Warning: require(./b.php) [function.require]: failed to open stream: No such file or directory in D:\Programs\WampServer 2\www\temp\a.php on line 5
Fatal error: require() [function.require]: Failed opening required './b.php' (include_path='.;C:\php5\pear') in D:\Programs\WampServer 2\www\temp\a.php on line 5
Run Code Online (Sandbox Code Playgroud)
我注意到如果我改变了
require('./b.php');
Run Code Online (Sandbox Code Playgroud)
至
require('b.php');
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?它按预期工作.
Sta*_*ers 14
当您使用include或require时,您包含的文件将表现为包含它的脚本的一部分.在这种情况下,文件a.php
可能与同一目录存在b.php
,但是当代码运行时,它正在上下文中运行index.php
.如果您使用__FILE__
而不是__DIR__
,则会看到a.php
返回与index.php
作为包含文件运行时相同的值index.php
.
由于相对路径根据文件的使用位置而变化,因此最好使用相对于服务器根目录的绝对路径.如果正常配置了计算机,那将首先配置$_SERVER["DOCUMENT_ROOT"]
,然后添加应用程序路径和包含路径.在某些共享主机服务器上,您可能必须在某处对根进行硬编码(或将其添加到.htaccess文件中).