编码中的一个主要问题是包括config.php和db class我需要连接到数据库
考虑我的文件根目录中有一个mysql.php和config.php文件
现在如果我在这条道路上:
根/子/入口/模块/ Gallery.php
我需要获取config.php变量,例如
$dbhost = "localhost";
$dbuname = "root"; // Database username
$dbpass = ""; // Database password
$dbname = "mydb"; // Database NAME
我应该以这种方式包括它:
require("../../../config.php");
require("../../../mysql.php");
$mdb = new sql_db($dbhost, $dbuname, $dbpass, $dbname, false);
if(!$mdb->db_connect_id) {
die("cant connect to db");
}
确定它会给我一个错误:
警告:include(../../../ config.php) [function.include]:无法打开 stream:
中没有这样的文件或目录
那么有什么办法可以避免这个错误并找到一种方法来连接我的数据库?!
答案 0 :(得分:4)
使用此:
require(dirname(__FILE__)."/../../../config.php");
require(dirname(__FILE__)."/../../../mysql.php");
答案 1 :(得分:2)
实际上,最简单的方法是在现有的 include path中加入。
例如,如果您的include_path设置为
/some/path
,您的配置文件位于
/some/path/app/config/mysql.txt
你可以做到
include 'app/config/mysql.txt'
与kgb already suggested一样,您可以modify the include_path为PHP提供额外的路径以查找文件。但是,你应该使用合理数量的pathes。如果你有一堆包含所需文件的其他文件夹,那么设置config文件夹的路径只是为了能够做到包含'mysql.txt'是不明智的。 Web应用程序中的常见方法是设置应用程序根文件夹的路径。
如果要引导应用程序,还可以设置一个设置应用程序路径的常量。我不是将常量添加到全局命名空间的粉丝,但它也是你经常看到的东西。然后你会做
include APP_ROOT . '/config/mysql.txt';
我想到了许多存储应用程序路径的其他方法,但我想上述内容足以解决您迫在眉睫的问题。
答案 2 :(得分:1)
你可以在php.ini文件中扩展php include路径或使用set_include_path()
:
set_include_path(get_include_path().PATH_SEPARATOR.$pathToMysqlPhp);
include('mysql.php');
答案 3 :(得分:0)
几年前我在使用模板系统时遇到了类似的问题。我通过确保所有文件集在文件路径下的深度相同来解决它
例如
www.mywebsites.com/pages/myfile.php
www.mywebsites.com/templates/mytemplate.html
www.mywebsites.com/images/image.png
www.mywebsites.com/includes/myfunctionfile.php
这样当包含来自任何其他文件的文件时,您只使用相对于根的路径
include('../includes/myfunctionfile.php');
低技术解决方案,但它对我有用。
答案 4 :(得分:0)
include './common/class/config.php';
使用它来定义项目中php的来源。 和./它是我们文件的基本路径。