2016-03-23 95 views
2

我有一個PHP腳本(machine_db.php),使MySQL數據庫的連接,如下所示:Eclipse的: 「PHP致命錯誤:調用未定義的函數mysqli_connect()」

<?php 
//phpinfo(); 
// 1 connect to mysql 
$servername = "localhost"; 
$username = "root"; 
$password = "abcd"; 
$conn = mysqli_connect($servername, $username, $password); 
... 
?> 

我使用:

  • Server版本:阿帕奇/ 2.4.12(Ubuntu的)
  • PHP 5.6.11
  • 的MySQL版本14.14 DISTRIB 28年6月5日

我正在使用Eclipse Mars,並且爲Eclipse安裝了PHP包(插件或任何它被稱爲)。然後,我創建了一個PHP項目,並加入我的PHP文件,該項目並沒有運行在PHP CLI應用程序,但我得到了下面的錯誤在Eclipse控制檯,

PHP Fatal error: Call to undefined function mysqli_connect() 

但是我沒有得到任何錯誤,當我運行

php machine_db.php 

我也看到,在我的Eclipse項目資源管理器中有一個PHP語言庫中包含的mysqli類:從終端一樣完全相同的腳本。

+0

的mysqli沒有在Web服務器的php.ini文件中激活,但在php.ini的CLI版本中啓用。 – Shadow

+0

@Shadow謝謝。我沒有作爲網絡應用程序運行。我正在運行爲cli應用程序。你說它已經啓用了cli版本。那麼問題在哪裏? – AlirezaK

+1

eclipse使用的php.ini沒有啓用mysli擴展。檢查日食的配置它使用什麼PHP。 – Shadow

回答

0

我想你忘記了數據庫名稱:

$servername = "localhost"; 
$username = "root"; 
$password = "abcd"; 
$db_name = "my-db"; 
$conn = mysqli_connect($servername, $username, $password, $db_name); 

您還可以使用

$conn = new mysqli($servername, $username, $password, $db_name); 

文檔:http://php.net/manual/fr/mysqli.construct.php


也嘗試安裝PHP5-mysqli的

sudo apt-get update 
sudo apt-get install php5-mysql php5-mysqli 
sudo service apache2 restart 

不要忘記去掉這一行你/etc/php5/apache2/php.ini

extension=php_mysql.so 
extension=php_mysqli.so 

不要忘了重新啓動Apache服務器

sudo service apache2 restart 
+0

謝謝$ db_name是可選的。我的問題不是我沒有db_name。問題是mysqli_connect沒有被定義在第一位。 – AlirezaK

+0

更新我的答案。我添加操作爲php.ini –

+0

當我做「sudo apt-get安裝php5-mysql php5-mysqli」我得到以下消息: 包php5-mysqli不可用,但被其他包引用。 這可能意味着包丟失,已過時,或 只能從其他來源 但是,下面的包替換: PHP5-mysqlnd:I386 PHP5-MySQL的:I386 PHP5-mysqlnd PHP5-MySQL的 E:包'php5-mysqli'沒有安裝候選版 – AlirezaK

0

我剛剛意識到,如果在日食中,我檢查window->preferences->php->phpexecutables下的「use system default php.ini」它會神奇地工作。

有誰知道什麼是「系統默認php.ini」?

我做了一個快速$php --ini,並返回:

Configuration File (php.ini) Path: /etc/php5/cli 
Loaded Configuration File:   /etc/php5/cli/php.ini 
Scan for additional .ini files in: /etc/php5/cli/conf.d 
Additional .ini files parsed:  /etc/php5/cli/conf.d/05-opcache.ini, 
/etc/php5/cli/conf.d/10-mysqlnd.ini, 
/etc/php5/cli/conf.d/10-pdo.ini, 
/etc/php5/cli/conf.d/20-json.ini, 
/etc/php5/cli/conf.d/20-mysql.ini, 
/etc/php5/cli/conf.d/20-mysqli.ini, 
/etc/php5/cli/conf.d/20-pdo_mysql.ini, 
/etc/php5/cli/conf.d/20-readline.ini 
+0

/etc/php5/cli/php.ini **是**你的「系統默認php.ini」在Eclipse中,你可以在php可執行文件設置下定義一個不同的php.ini文件,這將使你能夠使用完全不同的php.ini開發目的在Eclipse中,Php cli使用「系統默認php.ini」 – Shadow

+0

「系統默認php.ini」運行php cli時不帶「-n」如果-n設置,conf.d/*。ini不是裝 – zulus

相關問題