在php中动态需要一个文件

时间:2014-02-28 19:59:29

标签: php include require

我在这里绞尽脑汁,经过多次尝试和研究,我不得不向你寻求帮助。

我有两个文件如下:

- SITE/conf1g.php 
- SITE / library / Mysqli.class.php 

conf1g.php文件包含所有站点设置文件,Mysqli是使用文件conf1g.php中定义的变量连接数据库的原因

但我使用require_once在多个位置使用Mysqli.class.php。如何在conf1g.php __构建类中包含该文件? (该类位于Mysqli.class.php文件中)

我能得到的最好的是:

<?php
function __construct() {

 $path = $_SERVER['SCRIPT_FILENAME'];
 $pa = $path_parts = pathinfo($path);
 $file = str_replace($path_parts['basename'],'',$_SERVER['SCRIPT_FILENAME']);
 $file = str_replace($file,'',dirname(__FILE__));
 $file = str_replace('library','conf1g.php',$file);
 require_once($file);

 //PDO CONNECTION CODE HERE

}
?>

但如果我使用子文件夹,则会出现错误:

-/var/www/folder/sub_folder/userhere.php 

该网站位于:

-/var/www/SITE /

知道如何以动态方式包含此文件吗?或任何解决方案?

1 个答案:

答案 0 :(得分:1)

感谢您的帮助。管理在这里制作一个半不优雅的代码,但它在所有情况下都有效并且没有问题。

    $path = $_SERVER['SCRIPT_FILENAME'];
    $pa = $path_parts = pathinfo($path);
    $file = str_replace($path_parts['basename'],'',$_SERVER['SCRIPT_FILENAME']);
    $file = str_replace($file,'',dirname(__FILE__));
    $file = str_replace('library','conf1g.php',$file);
    $file = str_replace($_SERVER['DOCUMENT_ROOT'],'',$file);

    $subcasas = explode('/',str_replace($_SERVER['DOCUMENT_ROOT'],'',dirname(__FILE__)));
    if(!is_file($file)){
        $file = substr( $file, 1 );
        for($x=0; $x<count($subcasas); $x++){
            $file = str_replace($subcasas [$x],'..',$file);

            if(is_file($file)){
                break; //que deselegante
            }
        }
    }
    $this->file_config = $file;
    require($this->file_config);
    $this->user = $configuracoes_bd_mysql[USER];
    $this->password = $configuracoes_bd_mysql[SENHA];
    $this->host = $configuracoes_bd_mysql[HOST];
    $this->db = $configuracoes_bd_mysql[DB];