专栏首页小狼的世界CodeIgniter 2.1.0 的白屏错误调试

CodeIgniter 2.1.0 的白屏错误调试

今天在配置一个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的调用函数都用了@将错误信息隐藏了,难怪白屏,什么信息都没有。最后测试到,问题出在下面这个函数上:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Fedora 11 的安装以及 LAMP环境的搭建(二)

            Windows下的同事,很多都使用winrar来压缩和传输文件,所以这个也是不可或缺的,提供对于rar压缩格式的支持

    大江小浪
  • 在Centos 5.2下编译安装LAMP

    首先使用Virtualbox安装一台CentOS 5.2的虚拟机,网络连接采用 Host-only Adapter,这样主客机之间可以互相访问,但是客机不能够上...

    大江小浪
  • 如何开发YUI3的扩展

    YUI是Yahoo发布的一个JS框架,虽然不如jQuery简单,但是如果你是要做一些复杂的事情的时候,有一个合适量级的框架还是能有用不少。

    大江小浪
  • 关于mysql的1067与1045错误

    以前装过xampp后,发现用它的话,想学点东西有点困难(太傻瓜化了)。干脆自己弄环境去折腾一把…

    meteoric
  • SpringBoot+Mysql8实现读写分离

    在实际的生产环境中,为了确保数据库的稳定性,我们一般会给数据库配置双机热备机制,这样在master数据库崩溃后,slave数据库可以立即切换成主数据库,通过主从...

    JAVA日知录
  • 远程连接ubuntu mysql出现2003错误 cant connect to mysql(转载)

    2.打开my.cnf文件,找到 bind-address = 127.0.0.1 在前面加上#注释掉,如下: #bind-address = 127.0.0....

    lin_zone
  • C++ 连接数据库的入口和获取列数、数据

    这里不具体放出完整的程序,分享两个核心函数: 由于这里用到的函数是编译器自己的库所没有的,需要自己下载mysql.h库或者本地有数据库,可以去bin找到,放进去...

    林冠宏-指尖下的幽灵
  • MySQL添加用户、删除用户与授权

      mysql> insert into mysql.user(Host,User,Password) values("localhost","test",pa...

    Sindsun
  • Ubuntu彻底卸载mysql/mariadb并且重新安装

    首先删除mysql: sudo apt-get remove mysql-* 然后清理残留的数据 dpkg -l |grep ^rc|awk '{prin...

    王念博客
  • MySQL添加用户、删除用户与授权

    1.新建用户   1.1 登录MYSQL:   @>mysql -u root -p   @>密码   1.2 创建用户:   mysql> CREATE US...

    Java中文社群_老王

扫码关注云+社区

领取腾讯云代金券