为什么在加载CodeIgniter 3数据库库时在XAMPP上出现500错误?

时间:2017-10-14 18:20:25

标签: codeigniter-3

我已经通过stackoverflow和其他论坛上的线程数来找到答案,但找不到相关的答案。人们采用了不同的方法,但迄今为止没有人对我有用。

我在XAMPP上使用CI 3,每当我在模型中加载数据库库时,我都会遇到500错误。

这是我的CI数据库配置信息:

    'hostname' => 'localhost',
    'username' => 'my_user',
    'password' => 'my_pass',
    'database' => 'prod_db',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,

PHP ini db库如下:

extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
;extension=php_ftp.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll

我的型号代码如下:

class loginmodel extends CI_Model {


    public function validate_login($username, $password) {

        $this->load->database();
        $var = 0;
        return $var;

    }

}

每当我删除$ this-> load-> database();从模型,我的代码运行,我能够重定向到“登录失败”页面。但是,每当我在autoload.php中加载我的数据库或在上面的模型中加载它时,代码都会失败。

Autoload.php $ autoload ['libraries'] = array('database');

Apache错误日志显示以下错误,但我无法理解为什么会发生这种情况。

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mysqli.dll' - The specified module could not be found.\r\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_mysql.dll' - The specified module could not be found.\r\n in Unknown on line 0

请告知。

编辑:

我验证了所有配置都没问题,并且如评论中所述,我将环境变量添加到Windows并通过PHPInfo验证mysqli和mysqlnd已加载。

1 个答案:

答案 0 :(得分:0)

尽管所有配置都正确,但错误仍然存​​在,我做了一个干净的CI安装,以重现库加载失败。此时CI返回了拒绝数据库访问的错误。

然后我意识到迁移后,数据库用户未在新环境中创建。因此,一旦我创建了所需的用户并为其分配了所需的权限,我就可以正常运行代码。

因此,如果将来遇到此类问题,以下步骤可能有所帮助:

  • 首先,验证您所需的用户是否可以访问 数据库中。
  • 修改.htaccess后才能使用您想要的网址方案 验证数据库连接是否正常工作
  • 然后验证XAMPP上的PHP.ini中是否有可用的绝对路径。
  • 另外,验证是否在环境变量中添加了PHP。我的 Windows 10上的值如下所示:变量名称:PHP,变量 值:C:\ xampp \ php \ ext
  • 在CI中,mysqli被选为数据库驱动程序
  • 在PHP.ini中启用了mysqli扩展。即php_mysqli.dll
  • 回显PHPInfo以验证你的mysqli和mysqlnd是否可用 安装。

如果无效,请在设置数据库配置之后和设置.htaccess之前,在单独的目录上执行CI的全新安装并加载数据库,直到可以重现错误为止。

希望错误消除!