0

海。我有一个非常奇怪的网站,现在给我带来了麻烦。这是简化的结构

public_html
- adm
--- raport
------ raportpdf.php
--- class
------ Bonus
--------- Bonus_DAO.class.php 
------ config.php
--- raport.php
- index.php

所以。Index.php 是巨大的加载器。它有线条:(但我不认为他们有什么不同)

set_include_path('lib/DB' . PATH_SEPARATOR . get_include_path());
set_include_path('lib/PHPLOT' . PATH_SEPARATOR . get_include_path());
set_include_path('config' . PATH_SEPARATOR . get_include_path());
set_include_path('view' . PATH_SEPARATOR . get_include_path());
set_include_path('controller' . PATH_SEPARATOR . get_include_path());
set_include_path('model' . PATH_SEPARATOR . get_include_path());

Bonus_DAO.class.php 内部类似于

require_once('./adm/class/config.php');

Raportpdf.php 通过 index.php 调用 - 它在邮件中发送其内容而没有任何错误。但是当我想访问 raport.php 时,出现如下错误:

Warning: require_once(./adm/class/config.php) [function.require-once]: failed to open stream: No such file or directory in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php  on line 2

Fatal error: require_once() [function.require]: Failed opening required './adm/class/config.php' (include_path='.:/usr/local/lib/php') in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2

我该如何解决这个问题?

4

1 回答 1

1

将如下一行插入到包含在您的此结构中的文件中(此包含的文件必须位于您的根目录中,例如 config.php 或我通常使用 init.php)。

define("ROOT_DIR",dirname(__FILE__));

然后,在您收到错误的地方(或代码中的同义词 - 任何您需要()/包含()的地方),在它之前添加 ROOT_DIR."/path/to/file"。这样做是提供根目录的绝对路径,然后您只需指定要查找的根目录中的目录。例如,我的根目录是“/home2/example”。现在,我将这一行插入到我包含的文件中,等等,并将 require 行更改为:

require_once(ROOT_DIR."/adm/class/config.php");

上面的行基本上可以转化为这一点(假设我在位于 /home2/example 的文件中使用了 define(); 语句)

require_once("/home2/example/adm/class/config.php");

所以基本上,这是给静态路径一个动态元素的简单方法,这样你就不会再遇到这个问题了!

祝你好运!
丹尼斯 M。

于 2010-07-15T20:15:57.283 回答