web-dev-qa-db-fra.com

Problème de connexion à mysql en utilisant le serveur php5 LAMP

J'essaie de configurer un serveur LAMP sur lubuntu 14.04.5, j'ai effacé index.html et l'ai remplacé par:

/var/www/html/index.php

Le problème est que tout ce qui précède <?php tag s'exécute et cela semble le planter. Je ne sais pas pourquoi, est-ce parce que je DOIS avoir index.html?

<?php
$dbhost = "localhost:3306";
$dbuser = "user1";
$dbpass = "pass1";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass);
if(!$connection){
die("connection error " . mysqli_error());
}
echo "connected successfully";
mysqli_close($connection);
?>

Donc, dans mon journal des erreurs php, j'obtiens la fonction non définie mysqli_connect (). Comment puis-je en faire une fonction disponible?

Lorsque je fais une recherche d'aptitude php5-mysql, un i apparaît, ce qui signifie qu'il est installé. Et il n'y a pas d'autres modules mysql à l'exception de mysqlnd dont je ne pense pas avoir besoin depuis son répertoire natif et mysqlnd-ms Comment résoudre ce problème?

edit: Je pense que j'ai besoin d'ajouter l'extension mysqli mais j'ai du mal à la localiser.

1
DR. Palson_PH.d

Alors ce que j'ai fait était Sudo apt-get install php5-mysql Ensuite, je recevais toujours la même page Web, donc je pensais que rien ne s'était passé, mais après avoir vérifié le /var/log/php5/error.log Il s'avère que l'erreur est passée de "commande non définie mysqli_connect ()" à une erreur liée au code comme "mysqli_error nécessite 1 paramètre et" l'objet de la classe mysqli n'a pas pu être converti en chaîne "et" serveur mysql inconnu 'localhost: 3306' ". localhost: 3306 a été remplacé par locahost. Donc, après la mise à jour de mon code, tout fonctionne bien.

<html>
   <head>
      <title>Connecting MySQL Server</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'user1';
         $dbpass = 'pass1';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
         if(! $conn ) {
            die('Could not connect: ' . mysql_connect_error());
         }
         echo 'Connected successfully';
         mysqli_close($conn);
      ?>
   </body>
</html>
2
DR. Palson_PH.d

Votre code contient des erreurs de syntaxe que vous devez utiliser:

<?php
    $dbhost = "localhost:3306";
    $dbuser = "user1";
    $dbpass = "pass1";
    $connection = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(!$connection){
        die("connection error " . mysqli_error());
    }
    echo "connected successfully";
    mysqli_close($connection);
?>

Les erreurs:

  • mysqli_erro() ==> mysqli_error()
  • dbpass ==> $dbpass
2
George Udosen

Vous dites que vous avez fait ça ...

Sudo apt-get install php5-mysql

Et vous ne mentionnez jamais cela, ce qui est également nécessaire ...

Sudo service Apache2 restart

Ce n'est pas parce que vous installez php5-mysql que Apache a chargé PHP ou le module PHP MySQL).

Vous pouvez savoir avec certitude ce qui se passe en créant un fichier phpinfo.php contenant ...

<?php
print_r (phpinfo());
?>

Ensuite, vérifiez + assurez-vous que les deux PHP est chargé + PHP le module mysql est chargé.

En cas de doute, vérifiez toujours la sortie de votre fichier phpinfo.php comme première étape de débogage.

Plusieurs fois, cette sortie simple résout rapidement des problèmes complexes.

0
David Favor