公司想把公司网站小改,于是我在本地做了个简单的wamp,环境搭建成功,把从ftp上下载下来的代码和数据库导入其中。于是我再更改php和数据库的连接文件,但是出现错误。Warning: Creating default object from empty value in D:\wamp\wamp\www\htdocs\libs\model.sys.php on line 32以下是错误文件control.sys代码://如果没有指定libs层,则禁止访问
if(!defined('LIBS'))
{
exit('error: Not define libs');
}class Control
{
//初始化
var $tpl;
var $lib_folder = "system";
var $url;
var $lang;//指定语言包数据
var $lang_id;//语言包ID号
var $inc_array;
var $system_time = 0;
var $sys_config;
var $db;
var $plugin;
function Control()
{
$model = $this->r_model();
$this->model = $model;
foreach(array_keys(get_object_vars($model)) AS $key)
{
$this->$key = $model->$key;
}
//echo "<pre>".print_r($model,true)."</pre>";
//unset($model);
$this->autoload();//自动加载类
$this->tpl = $this->view();
//运行插件
$this->plugin = $this->r_plugin();
$this->plugin->load_db($this->model->db);
}
//加载model层对数据进行管理
function r_model()
{
require_once(LIBS.'model.sys.php');
return new Model(true);
}
function r_plugin()
{
require_once(LIBS.'plugin.sys.php');
return new Plugin();
} function plugin($plugin_name)
{
if(!$plugin_name)
{
return false;
}
$plugin_name = strtolower($plugin_name);
$set_name = "plugin_".$plugin_name;
if($this->inc_array && is_array($this->inc_array) && count($this->inc_array)>0)
{
if(in_array($set_name,$this->inc_array))
{
return $this->plugin->$set_name;
}
}
$this->plugin->load_plugin($plugin_name);
$this->inc_array[] = $set_name;
return $this->plugin->$set_name;
} function model($model_name,$ifglobal=false)
{
return $this->load_model($model_name,$ifglobal);
} function load_model($model_name,$ifglobal=false)
{
if(!$model_name)
{
return false;
}
$model_name = strtolower($model_name);
$set_name = $ifglobal ? $model_name : $model_name."_m";
if($this->inc_array && is_array($this->inc_array) && count($this->inc_array)>0)
{
if(in_array($set_name,$this->inc_array))
{
return $this->$set_name;
}
}
$this->model->load_model($model_name,$this->model->db);
$this->$set_name = $this->model->$set_name;
$this->inc_array[] = $set_name;
return $this->$set_name;
}
function view()
{ require_once(LIBS.'view.sys.php');
$V = new View();
return $V->run();
}
function libs($lib)
{
//判断用户目录下是否有libs
$lib_file = file_exists(APP."libs/".$lib.".php") ? APP."libs/".$lib.".php" : LIBS.$this->lib_folder."/".$lib.".php";
if(!file_exists($lib_file))
{
exit("error: unable to load the library: ".$lib.".php");
}
include_once($lib_file);
$lib_name = strtolower($lib)."_lib";
$this->$lib_name = new $lib_name;
$this->inc_array[] = $lib_name;
return true;
}
//加载模块
function load_lib($lib)
{
$this->libs($lib);
return true;
}
function autoload()
{
$handle = opendir(LIBS."autoload");
$array = array();
while(false !== ($file = readdir($handle)))
{
if($file != "." && $file != ".." && $file != ".svn") $array[] = LIBS."autoload/".basename($file);
}
closedir($handle);
if(count($array)<1)
{
return false;
}
foreach($array AS $key=>$value)
{
$file_name = strtolower(basename($value));
$c_name = str_replace(".php","",$file_name);
$lib_name = $c_name."_lib";
include_once($value);
$this->$lib_name = new $lib_name;
$this->inc_array[] = $lib_name;
}
return true;
}
//配置参数
function set_config($config)
{
$this->config->c = $config['control_trigger'];
$this->config->f = $config['function_trigger'];
$this->config->d = $config['dir_trigger'];
return true;
}
//格式化URL
function url($value="",$extend="",$format_type="&amp;")
{
$url = defined("HOME_PAGE") ? HOME_PAGE : "index.php";
$url.= "?";
//判断是否是value;
if(is_string($value) && $value)
{
$val_array = explode(",",$value);
foreach($val_array AS $k=>$v)
{
$m = explode(":",$v);
if($m[0] && $m[1])
{
$val[$m[0]] = $m[1];
}
else
{
if($k == 0)
{
$val["c"] = $v;
}
elseif($k == 1)
{
$val["f"] = $v;
}
elseif($k == 2)
{
$val["d"] = $v;
}
}
}
}
else
{
if($value)
{
$val = $value;
}
}
unset($value);
//控制层
if($val['c'])
{
$url.= $this->config->c."=".rawurlencode($val["c"]).$format_type;
}
//控制函数
if($val["f"] && $val["f"] != "index")
{
$url.= $this->config->f."=".rawurlencode($val["f"]).$format_type;
}
if($val["d"])
{
$url.= $this->config->d."=".rawurlencode($val["d"]).$format_type;
}
//$this->url = $url;
if($extend)
{
$url .= $extend.$format_type;
}
return $url;
} //加载语言包
function lang($var="zh",$msg="")
{
$this->lang = array();
if($msg && is_array($msg) && count($msg)>0)
{
$this->lang = $msg;
}
$this->langid = $var;
$this->lang_id = $var;
return $msg;
}
function currency($rs,$currency="RMB")
{
if(!$rs) return false;
$this->currency->$currency = $rs;
}
//加载配置信息
function sys_config($array)
{
$this->sys_config = $array;
}
//读取时间及次数
function db_count()
{
$db = $this->db_engine;
$db_count = $this->$db->query_count;
return $db_count;
} function db_times()
{
$db = $this->db_engine;
$db_times = ($this->$db->query_times + $this->$db->conn_times);
return $db_times;
}
}
?>
<?php还有一个是model.sys.php<?php
/***********************************************************
Filename: libs/model.sys.php
Note : Model层管理器
Version : 3.0
Author  : qinggan
Update  : 2009-10-16
***********************************************************/
class Model
{
var $db_engine = "db";
var $db_type = "mysql";
var $langid = "zh";//指定语言包
function Model($db=false)
{
$db ? $this->run_db("database","db") : $this->load_db();
//指定langid
if($_SESSION["sys_lang_id"])
{
$this->langid = $_SESSION["sys_lang_id"];
}
}
function load_db()
{
$database_config_file = APP_ROOT.'database.config.php';
$_db_type["prefix"] = "qinggan_";
if(file_exists($database_config_file))
{
include($database_config_file);
}
$this->db->prefix = $_db_type["prefix"];
return true;
}
//加载model层
function load_model($model_name,$db)
{
if(is_array($model_name))
{
foreach($model_name AS $key=>$value)
{
$this->load_model($value,$db);
}
}
else
{
$this->_load_model($model_name,$db);
}
return true;
}
//用于内部使用的加载模块
function _load_model($model_name,$db)
{
if(!$model_name)
{
return false;
}
$model_name = strtolower($model_name);
if(file_exists(LIBS."models/".$model_name.".php") || file_exists(LIBS."models/".$this->db_type."/".$model_name.".php"))
{
$model_file = file_exists(LIBS."models/".$this->db_type."/".$model_name.".php") ? LIBS."models/".$this->db_type."/".$model_name.".php" : LIBS."models/".$model_name.".php";
$set_name = $model_name;
}
else
{
$model_file = file_exists(APP.'models_'.$this->db_type.'/'.$model_name.'.php') ? APP.'models_'.$this->db_type.'/'.$model_name.'.php' : APP.'models/'.$model_name.'.php';
if(!file_exists($model_file))
{
exit('error: unable to load the model: '.basename($model_file));
}
$set_name = $model_name.'_m';
}
//加载模块文件
include_once($model_file);
$this->$set_name = new $set_name();
$this->$set_name->db = $db;
unset($set_name,$model_file,$model_name);
return true;
}
//运行连接数据库引挈
function run_db($data_file='database',$engine='db')
{
if(!$engine) $engine = 'db';
$this->db_engine = $engine;
if($this->$engine && is_object($this->$engine))
{
return true;
}
if(!file_exists(APP_ROOT.$data_file.'.config.php'))
{
exit('error: unable to load the database: '.$data_file.'.config.php');
}
//加载数据库配置文件
include(APP_ROOT.$data_file.'.config.php');
$this->db_type = $_db_config['type'];//计算要加载的Model层对应的数据库类型
//加载数据库引挈
$db_file = LIBS.'db_engine/'.($_db_config['engine'] ? $_db_config['engine'] : $_db_config['type']).'.php';
if(!file_exists($db_file))
{
exit("error: unable to load the database engine file");
}
include_once($db_file);
$class_name = 'db_'.($_db_config['engine'] ? $_db_config['engine'] : $_db_config['type']);
$this->$engine = new $class_name($_db_config);
return true;
}
//加载数据库里的语言包 //rs:初始数组,且要求初始数据中必须包含langid和id两个值
//tbl:指定是属于哪个表的
function sys_merge_lang($rs,$tbl="")
{
//如果没有传值过来,返回false
if(!$rs)
{
return false;
}
//如果传过来的值不是数组,则返回原值
if(!is_array($rs) || count($rs)<1)
{
return $rs;
}
//如果没有指定表名,则返回原值
if(!$tbl)
{
return $rs;
}
$engine = $this->db_engine;
$this->db_sql = $this->$engine;
if(!$rs["langid"] && !$rs["id"])
{
$t_rs = array();
foreach($rs AS $key=>$value)
{
if(!$value["langid"] || !$value["id"])
{
return $rs;
}
if($value["langid"] == $this->langid)
{
return $rs;
}
$t_rs[$value["id"]] = $value;
}
unset($rs);
$rs = $t_rs;
ksort($rs);
//读取数据
$sql = "SELECT tbl_id,keys,val FROM ".$this->db_sql->prefix."langs WHERE langid='".$this->langid."' AND tbl='".$tbl."' ORDER BY tbl_id ASC";
$rslist = $this->db_sql->get_all($sql);
if(!$rslist)
{
return $rs;
}
$tmp_rslist = array();
foreach($rslist AS $key=>$value)
{
$tmp_rslist[$value["tbl_id"]][$value["keys"]] = $value["val"];
}
unset($rslist);
$rslist = $tmp_rslist;
if(!$rslist || count($rslist)<1)
{
return $rs;
}
foreach($rslist AS $key=>$value)
{
$rs[$key] = array_merge($rs[$key],$value);
}
return $rs;
}
else
{
if(!$rs["id"] || !$rs["langid"])
{
return $rs;
}
$sql = "SELECT keys,val FROM ".$this->db_sql->prefix."langs WHERE langid='".$this->langid."' AND tbl='".$tbl."' AND tpl_id='".$rs["id"]."'";
$rslist = $this->db_sql->get_all($sql);
if(!$rslist)
{
return $rs;
}
foreach($rslist AS $key=>$value)
{
$rs[$value["keys"]] = $value["val"];
}
return $rs;
}
}
}
?>
谢谢大神帮忙解决一下,小弟才疏学浅,急求啊。

解决方案 »

  1.   

    1、你给出的错误信息与给出的代码不对应
    比如 model.sys.php 的 32 行为 return true; 不可能发生错误
    control.sys.php 没给出,如果就是 control.sys 的话,由于没有给完整,不知道 167 行在哪里2、既然是从服务器中得来的,显然代码不会有问题
    问题在于你的运行方式与服务器上的不一样,也可能是少了文件或放错了位置
      

  2.   

    我让别人帮我看了一下说我的数据库没有连接成功。帮忙看看哪里设置错了。我先在本地创建了一个数据库,然后把备份的数据库导入进去了。数据库名称就是hmu206171_hdm1051007_db_20140104-11,用户名是root,密码是空,wamp的环境。是不是程序里面只有这一个配置文件的地方?还有其他地方需要配置吗?还是先的配置有错误?谢谢谢谢。急求啊。谢谢<?php
    /***********************************************************
    Filename: database.config.php
    Note : 数据库参数配置
    Version : 3.0
    Author  : qinggan
    Update  : 2009-10-16
    ***********************************************************/
    //数据库类型
    $_db_config["type"] = "mysql";
    //连接数据库引挈
    $_db_config["engine"] = "mysql";
    //数据库服务器
    $_db_config["host"] = "localhost";
    //数据库端口
    $_db_config["port"] = "3306";
    //数据库用户
    $_db_config["user"] = "root";
    //数据库密码
    $_db_config["pass"] = "";
    //数据库名
    $_db_config["data"] = "hmu206171_hdm1051007_db_20140104-11";
    //数据表前缀
    $_db_config["prefix"] = "qiye_";
    //启用缓存
    //txt:文本缓存
    //mem:内存缓存
    //sql: 数据库缓存,值缓存在数据表 cache 中
    //是否启用缓存请查看相应程序中config.inc.php中是否有设置 DB_CACHE
    //未设置或设置否表示不启用缓存
    //推荐前台启用缓存,后台禁用缓存
    $_db_config["cache_type"] = "txt";
    //配置memcache的服务器及端口
    $_db_config["cache_server"] = "localhost";
    $_db_config["cache_port"] = 11211;
    //缓存过期时间,单位秒钟,如果设为0,也表示不缓存,不支持负数
    $_db_config["cache_time"] = 3600;
    ?>