ecmall 页面空白解决方案汇总 (仅供参考)
2016-05-18 23:26
447 查看
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文件,这样问题就解决了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
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文件,这样问题就解决了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
相关文章推荐
- 网站开发 百度地图的添加 (自定义地址)
- mysql的where查询语句后有多个“or”的SQL语句执行分析!
- gedit 快捷键
- Firefox 键盘快捷键
- 配置CentOS 6.2 第三方yum源
- shell文件操作汇总
- Linux下paste命令
- 赋值运算符函数
- QQ音乐项目(OC版) - 实现细节
- [转]redhat7(centos7) not registered to Red Hat Subscription Management
- aggregate聚集框架
- HDOJ/HDU 2568 前进(简单题)
- 堆排序
- 第一篇博客 试试水
- CentOS 6.2 下安装QQ2012完全可用
- Zend Optimizer for linux安装,怎么来测试安装成功
- IE6,IE7,FF | CSS + DIV 兼容问题综合解决方案
- Fatal error: Allowed memory size of 8388608 bytes exhausted問題解決方式
- sqlite至mysql的转换
- wamp安装Zend Optimizer