2016-03-23 12 views
2

Ich habe ein PHP-Skript (machine_db.php), die eine Verbindung zur MySQL-Datenbank macht wie folgt:Eclipse-: "PHP Fatal error: Call to undefined function mysqli_connect()"

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

ich verwende:

  • Server-Version: Apache/2.4.12 (Ubuntu)
  • PHP 5.6.11
  • mysql Ver 14.14 Distrib 5.6.28

Ich benutze Eclipse Mars und ich habe PHP-Pakete (addin oder was auch immer es heißt) für Eclipse installiert. Dann habe ich ein PHP-Projekt und fügte hinzu, meine PHP-Datei in das Projekt und hat als php cli Anwendung ausführen, aber ich erhalte den folgenden Fehler in Eclipse-Konsole

PHP Fatal error: Call to undefined function mysqli_connect() 

aber ich bekomme keine Fehlermeldung, wenn ich die laufen genau die gleiche Skript von Terminal wie:

php machine_db.php 

ich sehe auch, dass in meinem Eclipse-Projekt-Explorer gibt es eine PHP-Sprache-Bibliothek ist die mysqli-Klasse enthält.

+0

Mysqli nicht in der php.ini des Webservers aktiviert ist, werden aber in der php.ini für die cli Version aktiviert. – Shadow

+0

@Shadow Danke. Ich laufe nicht als Web-App. Ich laufe als cli app. Und Sie sagen, es ist bereits für die CLI-Version aktiviert. Wo ist das Problem? – AlirezaK

+1

Die von Eclipse verwendete php.ini verwendet keine mysli-Erweiterung. Überprüfen Sie die Konfiguration der Eclipse, welche PHP verwendet wird. – Shadow

Antwort

0

Ich glaube, Sie den DB-Name vergessen:

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

können Sie auch

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

Dokumentation: http://php.net/manual/fr/mysqli.construct.php


auch versuchen php5-mysqli

zu installieren

vergessen Sie nicht, diese Zeile in Ihrer /etc/php5/apache2/php.ini

Kommentar-
extension=php_mysql.so 
extension=php_mysqli.so 

Vergessen Sie nicht, Apache-Server neu zu starten

sudo service apache2 restart 
+0

Danke $ db_name ist optional.Mein Problem ist nicht, dass ich db_name nicht habe. Das Problem ist, dass mysqli_connect nicht an erster Stelle definiert ist. – AlirezaK

+0

update meine Antwort. Ich füge Manipulation für php.ini –

+0

, wenn ich "sudo apt-get installieren php5-mysql php5-mysqli" Ich bekomme die folgende Nachricht: Paket php5-mysqli ist nicht verfügbar, wird aber von einem anderen Paket bezeichnet. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder ist nur aus einer anderen Quelle verfügbar jedoch die folgenden Pakete ersetzen es: php5-mysqlnd: i386 php5-mysql: i386 php5-mysqlnd php5-mysql E: Paket 'php5-mysqli' hat keinen Installationskandidaten – AlirezaK

0

Ich habe erkannt, dass, wenn In Eclipse überprüfe ich "use system default php.ini" unter window->preferences->php->phpexecutables wird es magisch funktionieren.

Weiß jemand, was ist "Systemstandard php.ini"?

ich ein ein schnelles $php --ini und es gibt:

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 ** ist ** Ihr "Systemstandard php.ini" In Eclipse können Sie unter php executable setting eine andere php.ini-Datei verwenden, damit Sie eine komplett andere php.ini verwenden können Entwicklungszwecke innerhalb von Eclipse Php cli verwendet diese "system default php.ini". – Shadow

+0

"system default php.ini" führen php cli ohne "-n". Wenn -n gesetzt ist, conf.d/*. ini sind nicht geladen – zulus

Verwandte Themen