ecmall mysql.php_ecmall页面空白解决方案汇总

页面空白解决方案:

---------------------------------------------------------------------------------------------

1,到php.ini中打开错误报告,将报错信息贴出来

打开错误报告的方法:将error_reporting 设置为  E_ALL,将display_errors 设置为 On

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2,我把temp入面的folder再set 777就可以了....

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3,php,mysql,httpd版本问题

++++++++++++++++++++

httpd版本:

[root@bogon jitong360temp]# httpd -v

Server version: Apache/2.2.15 (Unix)

Server built:   Dec  8 2011 18:07:26

++++++++++++++++++++

php版本:

[root@bogon jitong360temp]# 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

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

www.it165.net

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文件,这样问题就解决了。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

9.已经测试完毕了,是PHP的兼容性问题,5.3.2不适合ECMALL2.2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值