1

私はextract.phpと呼ばれるファイルに多くのphpインクルードを持つ関数(注文)を持っています

http://example.com/application/dir1/dir2/dir3/extract.php

function orders ($username)
{
 require ("functions.inc.php");
 define("DATAGRID_DIR", "./../datagrid/");
 define("PEAR_DIR", "./../datagrid/pear/");
 require_once (DATAGRID_DIR . 'datagrid.class.php');
 require_once (PEAR_DIR . 'PEAR.php');
 require_once (PEAR_DIR . 'DB.php');
 require_once ('./../datagrid/classes/database.class.php');

//function code here
}

同じディレクトリ内にこの関数を呼び出す別のファイル(install.php)があり、非常にうまく機能します。

<?php
include ("extract.php");
orders ("643443876996");
?>

ただし、このパスhttp://example.com/orders/getorder.phpの別の関数に含めると 、ファイル'datagrid.class.php'が見つからないというエラーが表示されます。

    <?php
    include ("include('../application/dir1/dir2/dir3/extract.php');");
    orders ("643443876996");
    ?>

パス参照を正しくするにはどうすればよいですか?

4

2 に答える 2

1

$_SERVER['DOCUMENT_ROOT']または

require_once(DATAGRID_DIR。'/application/dir1/dir2/dir3/datagrid.class.php');

等...

于 2012-09-10T16:04:21.200 に答える
1

相対ファイルは常に、PHPバイナリが呼び出されるディレクトリから計算されます。

これを避けるために、__FILE__定数を使用して実際のファイルを参照できます。

それを使用して、これを書くことができます:

$path = realpath(dirname(__FILE__)) . '/my/relative/path';

include_once $path;

スクリプトが呼び出される場所に関係なく、常に同じパスが生成されます

于 2012-09-10T16:16:55.847 に答える