2015-11-09 87 views
11

我只是改變了我的服務器和體驗以下這些錯誤:笨:致命錯誤調用未定義功能mysqli_init()

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: 

網站是笨。它可以在一臺服務器上很好地運行,也可以在本地機器上運行。但是當我在新服務器上傳該網站時,我遇到了這些錯誤。當然我改變了重要的參數,如數據庫連接,base_url()等。

我對數據庫有懷疑,但我創建了一個新的數據庫和用戶等,並更改了連接信息。

爲什麼會發生這種情況?知道它是服務器還是網站的錯誤會很有幫助。另外當我用一些測試代碼創建一些index.html時,一切都很好。

+2

檢查新服務器的phpinfo()並確保已安裝mysqli。 – DFriend

+0

你解決了嗎? – hybrid

+0

@hybrid我不知道你爲什麼打開賞金。這是用戶錯誤的cz。以及如果有一個錯誤,我們不能檢查它。 Cz沒有代碼在這裏 –

回答

0

對於我來說,這是在php.ini中一個缺少行解決它,因爲我複製另一個的php.ini文件XAMPP安裝。 值得檢查:「extension=php_mysqli.dll」是否存在(如果運行Windows,但不適用於OP,因爲它是Linux系統),或者如果「extension_dir」存在並且正確。

+0

我正在使用網絡服務器(cPanel)和mysqli安裝。我嘗試刪除它並添加它。問題仍然存在。 – hybrid

10

這是不是在你的應用程序中的錯誤,它只是一個缺少的驅動程序,這樣,你有兩個選擇......

轉到你的PHP init和取消以下:

extension=php_mysqli.dll 

如果沒有,請嘗試將其安裝在您的服務器上,這取決於您的分佈。

嘗試安裝php5-mysqlnd

如果你不能做到這一點通過主辦限制然後只需移動到MySQL驅動程序(不會需要改變的CodeIgniter或其他任何其他配置或查詢...)

像這樣(在您的配置文件)

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

打開您已經安裝了PHP,編輯php.ini文件
uncomm的文件夾耳鼻喉科這一行: extension=php_mysqli.dll

+0

不適用於我。仍然顯示相同的錯誤 –

-1

如果你的Web服務器與MySQL的低版本上運行,那麼作爲庫MySQLi不支持MySQL的你會得到這個錯誤< 4.1.3

強烈建議去與MySQLi,而不是回到MySQL擴展。

More info on php.net

+0

我檢查了版本。它是最新的一個 – hybrid

6

我只是有一個ubuntu16.04這個問題,php7.1安裝與Codeigniter 3

解決方案很簡單(如果很難找到!)

sudo apt-get install php7.0-mysql 

我意識到mysql*.ini文件,其中從etc/php/7.1/mods-available目錄中缺少。不知道它是如何發生的,但這對我有效。

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

+0

mmm ...這個問題在2015年11月9日被問及[PHP 7於2015年12月17日發佈。](http://php.net) /archive/2015.php)我確信現在有另一種解決方案。 –

+0

我認爲這並不重要,我正在尋找這個解決方案,並且版本顯然會不時更新。 – UselesssCat

+0

這對我有效,謝謝:) – Shina

2

這其實不是一個笨問題,而是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 

然後,它的工作原理。

0

1,apt-get install(yum,編譯安裝)php5-mysqlnd擴展。

2,如果沒有工作,確保mysqli的加載

[email protected]:/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找到配置文件

[email protected]:~$ 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,如果沒有配置擴展名,這樣的配置並記住重新啓動您的web服務器

[email protected]:~$ cat /etc/php5/apache2/conf.d/20-mysqli.ini 
    ; configuration for php MySQL module 
    ; priority=20 
    extension=mysqli.so 
0

在Linux中,您可以安裝MySQL驅動程序擴展。

sudo apt-get install php-mysql 

在Windows與XAMPP,司機已經保存在目錄,但您需要啓用它在php.ini中。您需要取消註釋這一行:

extension=php_mysqli.dll 

還需要在php.ini中檢查擴展目錄位置。我使用絕對路徑(而不是相對路徑)聲明來使其工作。

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

例如,

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

我試過了,註釋掉以下行/etc/php/cli/php.ini文件。

extension=php_mysqli.dll 

我在AWS-EC2實例和PHP 7.0上使用Ubuntu 16.04。這解決了我的問題。

相關問題