codeigniter 的问题,遇到 404 错误,不知道怎么调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeigniter 的问题,遇到 404 错误,不知道怎么调试相关的知识,希望对你有一定的参考价值。

参考技术A 首先确认报404是虚拟服务器,还是CI框架报的错。
如CI:(CI框架调试)
先确定是否走到index.php
在看看SERVER中参数是否正确。 (虚拟服务器或许做了转向)
然后去controller中对应的文件,确定文件夹、文件名大小写, 文件名和类名最好保持大小写一致。
然后在__construct()函数中, parent:: 下一行终止结束,测试输出试试。本回答被提问者和网友采纳

Codeigniter:对未定义函数 mysqli_init() 的致命错误调用

【中文标题】Codeigniter:对未定义函数 mysqli_init() 的致命错误调用【英文标题】:Codeigniter: fatal error call to undefined function mysqli_init() 【发布时间】:2016-02-10 07:48:03 【问题描述】:

我刚刚更改了我的服务器并遇到以下错误:

Fatal error: Call to undefined function mysqli_init() in /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php on line 126
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php:126)

Filename: core/Common.php

Line Number: 564

Backtrace:

A PHP Error was encountered

Severity: Error

Message: Call to undefined function mysqli_init()

Filename: mysqli/mysqli_driver.php

Line Number: 126

Backtrace:

网站在 Codeigniter 中。它可以在一台服务器上很好地工作,也可以在本地机器上工作。但是当我在新服务器上上传该网站时,我遇到了错误。当然,我更改了重要的参数,如数据库连接、base_url() 等。

我对数据库持怀疑态度,但我创建了一个新的数据库和用户等并更改了连接信息。

为什么会这样?了解它是服务器上的错误还是网站上的错误将很有帮助。此外,当我使用一些测试代码创建一些 index.html 时,一切都很好。

【问题讨论】:

检查新服务器的 phpinfo() 并确保已安装 mysqli。 你解决了吗? @hybrid 我不知道你为什么为此开放赏金。这是用户错误的cz。同样,如果有错误我们无法检查。 Cz这里没有代码 我建议您重新安装 mysql 并在 php.ini 中添加所需的更改因为可能某些文件丢失/未正确添加到已安装的 mysql 应用程序中。 【参考方案1】:

这不是您的应用程序中的错误,它只是缺少驱动程序,因此,您有几个选择...

转到您的 php init 并取消注释以下内容:

extension=php_mysqli.dll

如果没有,请尝试将其安装在您的服务器上,具体取决于您的发行版。

尝试安装php5-mysqlnd

如果您无法通过托管限制来做到这一点,那么只需移动到 mysql 驱动程序(不需要更改 CodeIgniter 中的其他配置或查询或其他任何东西......)

像这样(在你的配置文件中)

$db['default']['dbdriver'] = 'mysql'; (you might have mysqli now)

【讨论】:

使用 php 5.4 或更高版本 mysqlnd 似乎是默认选项? mysqlndphp-mysqlnd 很好,这就是我的解决方案。就我而言,我正在运行 centos 7,我必须重新启动 httpd 服务才能使其正常工作。 "sudo yum systemctl 重启 httpd"【参考方案2】:

我刚刚在使用Codeigniter 3 安装ubuntu16.04php7.1 时遇到了这个问题。

解决方案很简单(如果很难找到!)

sudo apt-get install php7.0-mysql

我意识到mysql*.ini 文件在etc/php/7.1/mods-available 目录中丢失。不知道它是怎么发生的,但这对我有用。

如果您使用 7.2,只需输入 sudo apt-get install php7.2-mysql

【讨论】:

mmm... 这个问题是在 2015 年 11 月 9 日提出的,PHP 7 was released on december 17, 2015. 我确定此时还有另一种解决方案。 我觉得不重要,一直在找这个解决方案,版本明显不时更新。【参考方案3】:

使用这个:

sudo apt-get install php7.*-mysqli

sudo phpenmod mysqli
sudo service apache2 restart

【讨论】:

【参考方案4】:

这其实不是 CodeIgniter 问题,而是 PHP 安装问题。

我已经在我的 Linux 服务器中安装了 PHP5.6,并且很难遵循使用 ff 命令在 PHP 中安装缺少的 mysqli_extension 的谷歌解决方案。

我尝试的是但返回警告消息:无法找到包 php5-mysqli

sudo apt-get install php5-mysqli

但是,我的php版本是5.6所以我尝试了

sudo apt-get install php5.6-mysqli

然后就可以了。

【讨论】:

【参考方案5】:

打开你安装PHP的文件夹,编辑php.ini文件取消注释这一行: extension=php_mysqli.dll

【讨论】:

【参考方案6】:

问题是php的mysql扩展可能没有安装,如果您使用的是php 7,只需发出以下命令并安装扩展,

sudo apt-get install php-mysql

【讨论】:

【参考方案7】:

对我来说,这是 php.ini 中缺少的一行解决了这个问题,因为我将另一个 php.ini 文件复制到了我的 XAMPP安装。 值得检查以下行:“extension=php_mysqli.dll”是否存在(如果运行 Windows,但这不适用于 OP,因为它是 Linux 系统),或者“extension_dir”是否存在且正确。

【讨论】:

我正在使用 Web 服务器 (cPanel) 并安装了 mysqli。我尝试删除它并添加它。问题依然存在。【参考方案8】:

1、apt-get install (yum, compile install 不管什么) php5-mysqlnd 扩展。

2、如果不行,请确保加载了mysqli

    root@x19-ws07-1:/etc/php5/apache2# cat /proc/31682/maps | grep mysql

如果加载了,可以看到:

    7f2cd3266000-7f2cd3285000 r-xp 00000000 fd:00 864561                     /usr/lib/php5/20131226/mysqli.so
    7f2cd69ef000-7f2cd6a2e000 r-xp 00000000 fd:00 864559                     /usr/lib/php5/20131226/mysqlnd.so

3、如果没有加载使用 php --ini 查找配置文件

    xxxx@xxxx:~$ php --ini
    Configuration File (php.ini) Path: /etc/php5/apache2
    Loaded Configuration File:         /etc/php5/apache2/php.ini
    Scan for additional .ini files in: /etc/php5/apache2/conf.d
    Additional .ini files parsed:      /etc/php5/apache2/conf.d/05-opcache.ini,
    /etc/php5/apache2/conf.d/20-mysqli.ini

4、如果没有配置扩展,像这样配置并记得重启你的网络服务器

    xxxx@xxxxx:~$ cat /etc/php5/apache2/conf.d/20-mysqli.ini
    ; configuration for php MySQL module
    ; priority=20
    extension=mysqli.so

【讨论】:

【参考方案9】:

在 Linux 中,您可以安装 MySQL 驱动程序扩展。

sudo apt-get install php-mysql

在带有 XAMPP 的 Windows 中,驱动已经保存在 ext 目录中,但您需要在 php.ini 中启用它。您需要取消注释此行:

extension=php_mysqli.dll

您还需要检查 php.ini 中的扩展目录位置。我使用绝对路径(不是相对路径)声明来使其工作。

extension_dir="your\absolute\path\to\xampp\php\ext"

例如,

extension_dir="C:\xampp\php\ext"

【讨论】:

【参考方案10】:

我试过了,在/etc/php/cli/php.ini文件下面的行注释掉。

extension=php_mysqli.dll

我在 AWS-EC2 实例和 PHP 7.0 上使用 Ubuntu 16.04。这解决了我的问题。

【讨论】:

【参考方案11】:

在我使用 Windows 的情况下,我没有注释所有必要的扩展,但它没有加载它们。然后,我检查了 php.ini 中的扩展目录变量,它是"ext",但后来我记得我以前遇到过类似的问题。所以我所做的基本上是把显式目录。像这样的:

extension_dir = "C:\php\ext"

当然具体的 ext 目录完全取决于你自己的设置和位置。

更新 php.ini 文件后,您只需重新启动 Apache 即可应用更改。

如果您手动安装 Apache(不使用 XAMPP 或 WAMPP 等预打包解决方案),您只需在命令提示符或具有管理员权限的 Powershell 中使用这些命令。

net stop Apache2.4

net start Apache2.4

【讨论】:

【参考方案12】:

我知道差别不大,但对于运行 CentOS 的人来说:

sudo yum install php-mysqli
sudo systemctl status httpd

我们正在使用yum 安装mysqli 扩展,然后重新启动我们的httpd 服务器以使更改生效,如果您不使用httpd,只需将httpd 替换为您的名称服务。

【讨论】:

【参考方案13】:

如果您的网络服务器运行的是较低版本的 MySQL,那么您将收到此错误,因为 MySQL

强烈建议使用 MySQLi 而不是返回 MySQL 扩展。

More info on php.net

【讨论】:

我查了版本,是最新的【参考方案14】:

我建议您执行以下操作:

改变:

'dbdriver' => 'mysqli',
'dbprefix' => '',

到:

'dbdriver' => 'mysql',
'dbprefix' => '',

database.php 文件中。

【讨论】:

以上是关于codeigniter 的问题,遇到 404 错误,不知道怎么调试的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 日志中出现奇怪的 404 错误

导航期间的 Codeigniter 'GET' 错误 404

Codeigniter 安装在子目录显示 404 错误

如何使用 Codeigniter 在自定义 404 页面中重定向 404 错误?

CodeIgniter 路由和 404 自定义错误

显示 404 错误的 codeigniter 网站