ecmall 页面空白解决方案汇总 (仅供参考)

30,页面空白解决方案:
---------------------------------------------------------------------------------------------

1,到php.ini中打开错误报告,将报错信息贴出来
打开错误报告的方法:将error_reporting 设置为  E_ALL,将display_errors 设置为 On
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2,我把temp入面的folder再set 777就可以了....
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3,php,mysql,httpd版本问题
++++++++++++++++++++
httpd版本:
[root@bogon ]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Dec  8 2011 18:07:26
++++++++++++++++++++
php版本:
[root@bogon]# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/sqlite3.so' - /usr/lib/php/modules/sqlite3.so: undefined symbol: sqlite3_stmt_readonly in Unknown on line 0
PHP 5.3.14 (cli) (built: Jun 14 2012 18:25:17)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4,其實還有一個可能會造成網頁空白… 就是填寫帳號或密碼的時候 要避免:/@這關鍵字!否則會導致資料庫連結失敗
看data/config.inc.php可以看到
‘DB_CONFIG’ => ‘mysql://username:password@localhost:3306/databasename’,
他是以/@:作分隔!所以只要用到關鍵字就會出錯

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5,将原有基于 ECMall 2.2 的系统,迁徙到最新的 php 5.3.3 时,出现首页和其他页面都为空白页的情况,调试多次,无果。后查看其 temp/logs/ 下的日志文件,发现是 eccore/model/mysql.php 文件,报时区错误,采用了在 php.ini 中添加时区设置的办法。

在 php.ini 中指定:

date.timezone = Asia/Shanghai

然后,重启 php-fpm ,问题解决。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6,从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在\includes\models 目录下,这些调用对于初学者来讲是比较复杂的,例如商品的数据调用函数,不能用在店铺的数据调用上,每个数据表都有自己的函数自己的类库和少量的公共类库。因此初学者来讲,调用mysql数据很困难。

我现在讲解一个简单的调用方法能满足95%以上的mysql数据调用请求。足够对ecmall进行二次开发。

例子:

$db = &db(); 第一步赋值数据库类库,

$db->query(sql); 第二步执行mysql 语句;

常用的数据库函数

、得到一行数据

$user=$db->getrow("select * from ecm_member where user_id=111");

print_r($user);

、得到一列数据

$user=$db->getcol("select user_id from ecm_member ");

print_r($user);

、得到所有数据

$user=$db->getall("select user_id from ecm_member ");

foreach ( $user as $row)

{

print_r($row);

}

、得到一个数值

$user=$db->getone("select count(*) from ecm_member ");

echo $user;

、执行sql语句

$db->query("update ecm_member  set user_name='aaa' ");

、得到最后一个ID

$db->query("insert ecm_member  set user_name='aaa' ");

$user_id = $db->insert_id();

echo $user_id;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7,ecmall function db()

2011年9月14日 过滤阳光 发表评论阅读评论   

由于需要把ecmall代码从一台机器复制到其他机器,我把其中的一些文件删除,本人以为tmp下面的文件全是ecmall生成的缓存文件,和程序代码无关的。后来发现,我的想法是错误的。

把代码复制到新的电脑上时,打开页面一片空白,页面上也没任何的错误信息,以为ecmall把错误信息提示全部关闭了,所以在页面上添加了以下代码,显示错误信息:


ini_set("display_error", 1);

error_reporting(E_ALL);

但是还是没有错误信息输出,只能一步一步的往下调试,终于发现原来错误在一个函数function db();这里。没有错误信息,在函数的return前输出有信息,但是在函数调用的后面输出是空白,一时真没解决方案,原因根本找不到错误原因。自己对ecmall也是刚接触,不是很熟悉。于是在qq群里不断的咨询,很多人都不知所以然。最后有一位高手说让我看看ecmall的错误日志,不看不知道,一看吓一跳,错误日志已经写了好多相同的错误信息,原来是我把mysql类的一个query_caches的文件夹给删除了,导致了mysql操作时无法写入缓存代码。而这些错误已经被ecmall给搜集,不显示在页面上了。

还有一点:ecmall有些写法会在php5.3环境下报错,虽然程序仍然可以运行,但是如果错误信息没有屏蔽的话,会有信息显示

    Deprecated: Assigning the return value of new by reference is deprecated

。关闭方法其实很简单,只要把 & 去掉就可以了,如下:


//下面写法在php5.3环境会报错,不影响程序运行

$this->_session =& new SessionProcessor(db(), '`ecm_sessions`', '`ecm_sessions_data`', 'ECM_ID');

//修改成

$this->_session = new SessionProcessor(db(), ecm_sessions`', '`e
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8,ECmall错误:Call to a member function get_users_count() on a no...

已有 49 次阅读2012-4-27 15:04 |
运行控制器程序时出现 Fatal error:Call to a member function get_users_count() on a non-object in /home/dmg/wwwroot/includes/ecapp.base,不得其解,一步步往上找错误吧,发现这里有问题:
  /*
 *前台控制器基础类
*/
 class FrontendApp extends ECBaseApp
{
     function __construct()
     {
        $this->FrontendApp();
     }
    function FrontendApp()
    {
         Lang::load(lang_file('common'));
        Lang::load(lang_file(APP));  //问题就出在这里了
       parent::__construct();

       // 判断商城是否关闭
       if (!Conf::get('site_status'))
     {
           $this->show_warning(Conf::get('closed_reason'));
       exit;
       }

        $this->assign('copyright', Conf::get('copyright'));
        $this->_statistic();
   }
    //省略代码
 }
 看上面code内标红的位置,调用控制器时会去load一个相应的lang文件,如果控制器为example.app.php,对应的需要在lang文件夹下添加同名的example.lang.php文件,这样问题就解决了。
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值