前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CodeIgniter 2.1.0 的白屏错误调试

CodeIgniter 2.1.0 的白屏错误调试

作者头像
大江小浪
发布2018-07-25 09:39:00
1.1K0
发布2018-07-25 09:39:00
举报
文章被收录于专栏:小狼的世界小狼的世界

今天在配置一个CodeIgniter 2.1.0时,遇到白屏,系统报500错误,但是Apache的错误日志中看不到任何错误信息输出。

经过简单的定位后,发现是由于在autoload中配置了自动加载database造成的,但是之前的版本用着都没问题呀,这个版本出这个问题,甚是奇怪。

系统的一些相关信息:

OS:Cent OS 5.4

Apache:2.2.4

PHP:5.2.17

Mysql:5.0.77

通过不断的die测试,定位到system/database/drivers/mysql/mysql_driver.php文件中,发现mysql的调用函数都用了@将错误信息隐藏了,难怪白屏,什么信息都没有。最后测试到,问题出在下面这个函数上:

代码语言:javascript
复制
   1:      function db_set_charset($charset, $collation)
代码语言:javascript
复制
   2:      {
代码语言:javascript
复制
   3:          if ( ! isset($this->use_set_names))
代码语言:javascript
复制
   4:          {
代码语言:javascript
复制
   5:              // mysql_set_charset() requires PHP >= 5.2.3 and MySQL >= 5.0.7, use SET NAMES as fallback
代码语言:javascript
复制
   6:              $this->use_set_names = (version_compare(PHP_VERSION, '5.2.3', '>=') && version_compare(mysql_get_server_info(), '5.0.7', '>=')) ? FALSE : TRUE;
代码语言:javascript
复制
   7:          }
代码语言:javascript
复制
   8:          
代码语言:javascript
复制
   9:          if( !function_exists('mysql_set_charset') ){
代码语言:javascript
复制
  10:              $this->use_set_names = TRUE;    //解决PHP MYSQL模块的BUG问题
代码语言:javascript
复制
  11:          }
代码语言:javascript
复制
  12:   
代码语言:javascript
复制
  13:          if ($this->use_set_names === TRUE)
代码语言:javascript
复制
  14:          {
代码语言:javascript
复制
  15:              return @mysql_query("SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'", $this->conn_id);
代码语言:javascript
复制
  16:          }
代码语言:javascript
复制
  17:          else
代码语言:javascript
复制
  18:          {
代码语言:javascript
复制
  19:              return @mysql_set_charset($charset, $this->conn_id);
代码语言:javascript
复制
  20:          }
代码语言:javascript
复制
  21:      }

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

在我这个版本的php中,不存在mysql_set_charset这个函数,但是判断的结果是需要这个函数,所以执行到这里的时候就发生错误了。

但是按照PHP的版本来说,这个函数应该是存在的,可能是编译的时候一些参数选择的问题造成了这个错误。

参考资料:

1、CodeIgniter Blank Page Fix: Blank webpage when setting up CodeIgniter, PHP, MySQL, and Apache

2、Mysql set charset

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档