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__));

次に、エラーが発生した場合(または、コード内の同義語として、required()/ include()が必要な場合)、その前に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 に答える