../为什么不是上一级目录,超级奇怪的问题。100分求助

fwqlove 2006-08-03 10:29:55
一般情况下

/ 表根目录
./ 表当前目录
../ 表上级目录

但是有如下情况时就会报错。有没有人知道为什么?


目录形式
www
|- test.php
|- test
| |- a.php
| |- b.php
| |- test
| | |- c.php


test.php <? require_once('test/a.php'); ?>

a.php <? require_once('test/c.php'); ?>

c.php <? require_once('../b.php'); ?>


出错提示:
Warning: require_once(../b.php) [function.require-once]: failed to open stream: No such file or directory in E:\testweb\test\test\c.php on line 1

Fatal error: require_once() [function.require]: Failed opening required '../b.php' (include_path='.;C:\php5\pear') in E:\testweb\test\test\c.php on line 1
...全文
401 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
net205 2006-08-03
  • 打赏
  • 举报
回复
不解
不知道是不是xuzuning(唠叨)所说的.
fwqlove 2006-08-03
  • 打赏
  • 举报
回复
1、b.php 文件确实存在
2、\和/ 只是操作系统的区别
3、用绝对路径肯定没问题,但做为一个类库,要做别人下载使用时,你还能要求别人提供路径吗?应该做到,放在哪个目录下,都能使用。
4、虽然这个嵌套不可取,但有些地方确实要用到!
xwsn 2006-08-03
  • 打赏
  • 举报
回复
恩。回答的很好
我以前 也有这个情况。
但是自己试一下就好了。。
这下也明白了一些
xuzuning 2006-08-03
  • 打赏
  • 举报
回复
c.php <? require_once('b.php'); ?>

理由很简单
虽然在操作系统中./和../都是相对目录的表示,但是在php中缺是把他们视为绝对路径处理的


test.php <? require_once('test/a.php'); ?>
a.php <? require_once('test/c.php'); ?>

c.php <? require_once('../b.php'); ?>
由于a.php已经被嵌入test.php了,所以再嵌入b.php时是按相对test.php所在路径查找的
所以../b.php是找不到的

包含文件应该组织成向下包含的格局。而向上包含是不可取的

zeroleonhart 2006-08-03
  • 打赏
  • 举报
回复
c.php <? require_once('../b.php'); ?>

-------------------------------------

it has no error.

check if the b.php exists .....
designonline 2006-08-03
  • 打赏
  • 举报
回复
test.php <? require_once('test/a.php'); ?>

a.php <? require_once('test/c.php'); ?>

c.php <? require_once('../b.php'); ?>
请使用\代替 /
jaspon 2006-08-03
  • 打赏
  • 举报
回复
“../b.php”的指向应该是DOCUMENT_ROOT/b.php,是www根目录下的,而不是上一级
lantersen 2006-08-03
  • 打赏
  • 举报
回复
那个根目录,比方说:
$rootPath = $_SERVER['DOCUMENT_ROOT'];
颓废的老猫 2006-08-03
  • 打赏
  • 举报
回复
相互调用比较复杂的话,还是用绝对路径比较好,不容易出错。
颓废的老猫 2006-08-03
  • 打赏
  • 举报
回复
你的c页面在哪个文件夹下运行的?
程序猿之殇 2006-08-03
  • 打赏
  • 举报
回复
晕倒,兄弟们,不是上个又回帖了吗.说回答是错误的.
fwqlove 2006-08-03
  • 打赏
  • 举报
回复
瀑布寒:jakey9826(无眠) 你怎么就不测试一下可行性呢。
fwqlove 2006-08-03
  • 打赏
  • 举报
回复
jakey9826(无眠)胡说。

同名目录在很多情况下都有可能存在呀。
只要不在同一级就行了呀。

我刚试了,改了名还是不行。。。
程序猿之殇 2006-08-03
  • 打赏
  • 举报
回复
是个回答是错误的,因为这种向上引用的,最好用上全路径.
test.php <? require_once('test/a.php'); ?>

a.php <? require_once('./test/test/c.php'); ?>

c.php <? require_once('./test/b.php'); ?>
zairwolfb 2006-08-03
  • 打赏
  • 举报
回复
这种情况建议你定义一个全局path。
程序猿之殇 2006-08-03
  • 打赏
  • 举报
回复
找不到文件是因为你两个目录名都是起test的原因.
fwqlove 2006-08-03
  • 打赏
  • 举报
回复
目录形式
www
|- test.php
|- test1
| |- a.php
| |- b.php
| |- test2
| | |- c.php


test.php <? require_once('test1/a.php'); ?>

a.php <? require_once('test2/c.php'); ?>

c.php <? require_once('test1/b.php'); ?>

总体如下。得出来的结论是,这样子的灵活性变得小了,因为c.php 是不可以单独变嵌入的了。
否则将找不到 b.php 文件.

终于理解了,你们理解了吗?
fwqlove 2006-08-03
  • 打赏
  • 举报
回复
按照 xuzuning(唠叨) 所说的意思。

重写 c.php
<? require_once('test/b.php'); ?>

结果运行正确了!

那这样子的话,多重多级的嵌套就复杂了。。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧