【问题标题】:Why I get 500 Error while on XAMPP while loading CodeIgniter 3 database library?为什么在加载 CodeIgniter 3 数据库时在 XAMPP 上出现 500 错误?
【发布时间】:2017-10-14 18:20:24
【问题描述】:

我已经在 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 中加载我的数据库库或在上述模型中加载它时,代码都会失败。

自动加载.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

请指教。

编辑:

我验证了所有配置都正常,如 cmets 中所述,我将环境变量添加到 windows 并通过 PHPInfo 验证 mysqli 和 mysqlnd 已加载。

【问题讨论】:

  • 您是否尝试过至少一次重新启动 Apache(以及所有服务 - 包括 PHP)?
  • 我在环境变量中添加了路径并重新启动了 Apache。 Mysql 错误消失了,但实际问题仍然存在。每当我在 codeigniter 中加载数据库库时,我都会收到 500 错误。但是当我从 autoload.php 或模型中删除库时,代码运行良好。不过作为参考,我使用的是 PHP 7.1.8 和 Apache 2.4。并且 phpmyadmin 运行得很好(提示我验证系统现在拾取 mysqli 没有问题。当我回显 phpinfo 时,我看到 mysqli 和 mysqlnd 已加载。如果解决了这个问题,我将不胜感激之前有人。
  • 呃,大错特错!不敢相信。所以这个线程真的很有帮助。关于错误,在确保配置正常后,我检查了 xampp 中的迁移数据库,并且未定义我的数据库用户名。设法通过在服务器的不同目录中运行 CI 的新副本并重现错误来验证它。虽然干净的 CI 安装确实引发了错误,但我猜我之前的代码没有返回任何错误,因为 .htaccess 被配置为抑制它们。谢谢大家。

标签: codeigniter-3


【解决方案1】:

尽管所有配置都正确,但错误仍然存​​在,我重新安装了 CI 以重现库加载失败。这次 CI 返回了一个 db 访问被拒绝的错误。

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

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

  • 首先,验证您想要的用户是否可以访问 数据库。
  • 修改您的 .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 并加载数据库库,直到您可以重现错误。

希望能消除这个错误!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2016-10-05
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多