请教一个 require_once 包含问题

startnow 2005-04-05 04:33:26
先看实例:
|-- index.php (根目录下文件)
|--Test(子目录)
|--common.php(子目录下文件)
|--a.php
|--b.php
|--Other(子目录)
|--c.php
|--d.php

idex.php 内容如下:
<?php
require_once('Test/common.php');
require_once('Test/b.php');
......
?>
common.php 内容如下
<?php
require_once './Other/c.php';
require_once './Other/d.php';
require_once 'a.php';
....
?>

访问index.php 时 在有的服务品上是正常执行(大多), 在有的服务器上运行则提示:

Warning: main() [function.main]: open_basedir restriction in effect. File(C:\php\pear\a.php) is not within the allowed path(s):......

Fatal error: main() [function.require]: Failed opening required 'a.php' (include_path='.;C:\php\pear'
等..


注: 1.include 调用的 Test目录下a.php 文件是 在 open_basedir 的范围内的, 没有超出.
2.是不是php.ini哪配置的问题导致这样 还是require_once引用出的问题?

望高手指教.

...全文
170 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2005-04-06
  • 打赏
  • 举报
回复
php5.0.2、php5.0.3下均未发现此问题
但是php5.0.0是肯定有的
lostgdi731 2005-04-06
  • 打赏
  • 举报
回复
没有绝对路径或相对路径稳定而言的。
肯定是有语法错误。
|-- index.php (根目录下文件)
|--Test(子目录)
|--common.php(子目录下文件)
|--a.php
|--b.php
|--Other(子目录)
|--c.php
|--d.php

idex.php 内容如下:
<?php
require_once('Test/common.php');
require_once('Test/b.php');
......
?>
common.php 内容如下
<?php
require_once './Other/c.php';
require_once './Other/d.php';
require_once 'a.php';
....
?>

--------
在你的 index.php require_once command.php 时,无论你以后其他所有子文件的require_once 的基本目录也是 index.php 所在的目录。
faisun 2005-04-05
  • 打赏
  • 举报
回复
使用

dirname($_SERVER["SCRIPT_FILENAME"])."/Text/common.php"

作为路径就OK啦,兼容性又好
-神仙- 2005-04-05
  • 打赏
  • 举报
回复
我也用绝对路径的
定义一个根路径常数,这样会方便一点
fzjw 2005-04-05
  • 打赏
  • 举报
回复
你查看一下出错环境php.ini的include_path设置,试着加上或者去掉./
include_path="./"
startnow 2005-04-05
  • 打赏
  • 举报
回复
谢谢 lzkd(浪子快刀) :)

再等等看有没高人传点经验, 晚上结帖.
lzkd 2005-04-05
  • 打赏
  • 举报
回复
to 楼主
1 对于程序来讲,使用绝对路径没有问题,唯一的问题是,别人想拿你的代码用的时候,比较麻烦.对于自己用,没有问题.
2 这应该没有关系.好象php5跟php4在这点上没改吧(不好意思,php5不熟)
alasika 2005-04-05
  • 打赏
  • 举报
回复
绝对路径在有些的虚拟服务器内是禁的,因为那样会透露到物理路径
alasika 2005-04-05
  • 打赏
  • 举报
回复
我是把index.php都放进index目录里,然后全部调用都是require_once(../path/file.php)
startnow 2005-04-05
  • 打赏
  • 举报
回复
to lzkd(浪子快刀) :
1.程序中用绝对路径会不会有什么问题?
2.发现出问题的那个服务用的是php5.0.3的, ft.... 5.0的 require 与4.3.x的 有什么区别?
lzkd 2005-04-05
  • 打赏
  • 举报
回复
我解决的方法是把绝对路径打上去,可能兼容性上不太好.但,不容易错.

21,891

社区成员

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

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