很奇怪的问题,require总是失败

wys444 2005-11-18 09:59:06
/a.php
<?
echo 1;
require("inc/b.php");
?>

/inc/b.php
<?
echo 1;
require("./inc/c.php");

?>

/inc/c.php
<?
echo 1;
?>

a.php b.php c.php文件的内容及所在文件夹如上,在我的机器上测试好好的,放到服务器上怎么也不行,错误:

Warning: main(./inc/c.php) [function.main]: failed to open stream: No such file or directory in D:\vhost\1\inc\b.php on line 3

Fatal error: main() [function.require]: Failed opening required './inc/c.php' (include_path='.;C:\php5\pear') in D:\vhost\1\inc\b.php on line 3



我感觉,除非A.PHP B.PHP C.PHP在同一个文件夹中,否则B.PHP中require别的文件总是失败。

...全文
236 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
surfchen 2005-11-20
  • 打赏
  • 举报
回复
/a.php
<?
echo 1;
require("inc/b.php");
?>

/inc/b.php
<?
echo 1;
require(dirname(__FILE__)."/c.php");

?>

/inc/c.php
<?
echo 1;
?>

大多数情况下PHP优先把当前运行的脚本作为相对路径参照物。如果多层包含,最好用dirname(__FILE__)来包含。
wys444 2005-11-19
  • 打赏
  • 举报
回复
糊涂了,A包含B,B包含C,那C的路径是相当A还是相对B???

注:唠叨的方法可以,我列出的代码在我的机器上和我以前租的服务器上也可以,就是现在的服务器上不可以。
aaabbb456 2005-11-18
  • 打赏
  • 举报
回复
因为"./ "表示当前目录,所以就不用再包含inc这个目录了
xuzuning 2005-11-18
  • 打赏
  • 举报
回复
a.php
inc/b.php
inc/c.php

a.php
<?php
require("inc/b.php");
...

b.php
<?php
require("c.php");
...

aaabbb456 2005-11-18
  • 打赏
  • 举报
回复
如果 b.php、c.php 这两个文件在同一目录中,那么b.php中就应该这样包含吧:
<?
echo 1;
require("./c.php");
?>
goldily 2005-11-18
  • 打赏
  • 举报
回复
/a.php
<?
echo 1;
require("inc/b.php");
?>

/inc/b.php
<?
echo 1;
require("inc/c.php");

?>

/inc/c.php
<?
echo 1;
?>
wjjchen 2005-11-18
  • 打赏
  • 举报
回复
或者用绝对路径。

21,886

社区成员

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

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