PHP mysqli() ne fonctionne pas

Pour commencer, je suis nouveau en PHP, et ceci est mon premier post sur stackoverflow.
Je suis en train d'utiliser mysqli_connect() pour écrire un enregistrement dans une table des utilisateurs dans une base de données de test.
Dans mysql-client, je peux ajouter un enregistrement avec la commande:

INSERT INTO users VALUES ( 'id' , 'smith' , 'joe' , 'joepass' );

Aussi loin que je peux comprendre, le suivant .page php doit ajouter joe smith à la table des utilisateurs quand il est atteint dans un navigateur:

<?php
echo "php start";

$con = mysqli_connect( "localhost" , "root" , "rootpass" , "db_name");

//Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query( $con , "INSERT INTO users values ( 'id' , 'smith' , 'joe' , 'joepass' )");

mysqli_close($con);

echo "php end";
?>

Mais quand je vais sur cette page dans un navigateur, je ne vois que le texte "php start" qui est le premier écho de la déclaration. Je m'attends à voir les mots "php fin" ainsi. Lorsque je vérifie la table des utilisateurs dans le client mysql je ne vois pas de nouveau record. Aussi, quand j'ai ouvert le php shell interactif avec php -a et exécutez la commande mysqli_connect(); la réponse est PHP Fatal error: Call to undefined function mysql_connect() in php shell code on line 1.

Cela me mène à croire que mysqli_connect n'est pas installé ou configuré correctement en php.ini, mais je n'ai pas une assez bonne compréhension de php.ini pour dépanner très bien. Aussi, j'ai un phpinfo() test.php page. Dans les "Crédits" de la table de la fonction phpinfo (), je vois les lignes suivantes:

MySQL driver for PDO    George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQLi    Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLnd    Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlueter
MySQL    Zeev Suraski, Zak Greant, Georg Richter, Andrey Hristov

Pour installer php, apache et mysql sur ce serveur Ubuntu, les commandes que j'ai sont:

sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-cli

et la seule configuration que j'ai réalisé que je me rappelle c'est d'ajouter un couple de noms de fichiers pour les apache2/mods-available/dir.conf ligne DirectoryIndex pour ouvrir certains noms de fichiers automatiquement.

Est-il mysqli de configuration qui doit être fait avant que les fonctions peuvent être utilisées?

Aussi, c'est une AWS serveur, mais je ne vois pas comment il pourrait y avoir un problème de réseau à 'localhost'... 😛

Je vais aussi inclure une grep -r 'mysqli' de sortie dans le /etc/php5 répertoire:

php5 grep -r 'mysqli'
apache2/php.ini:; http://php.net/mysqli.max-persistent
apache2/php.ini:mysqli.max_persistent = -1
apache2/php.ini:; http://php.net/mysqli.allow_local_infile
apache2/php.ini:;mysqli.allow_local_infile = On
apache2/php.ini:; http://php.net/mysqli.allow-persistent
apache2/php.ini:mysqli.allow_persistent = On
apache2/php.ini:; http://php.net/mysqli.max-links
apache2/php.ini:mysqli.max_links = -1
apache2/php.ini:; http://php.net/mysqli.cache_size
apache2/php.ini:mysqli.cache_size = 2000
apache2/php.ini:; Default port number for mysqli_connect().  If unset, mysqli_connect() will use
apache2/php.ini:; http://php.net/mysqli.default-port
apache2/php.ini:mysqli.default_port = 3306
apache2/php.ini:; http://php.net/mysqli.default-socket
apache2/php.ini:mysqli.default_socket =
apache2/php.ini:; http://php.net/mysqli.default-host
apache2/php.ini:mysqli.default_host =
apache2/php.ini:; http://php.net/mysqli.default-user
apache2/php.ini:mysqli.default_user =
apache2/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
apache2/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
apache2/php.ini:; http://php.net/mysqli.default-pw
apache2/php.ini:mysqli.default_pw =
apache2/php.ini:mysqli.reconnect = Off
cli/php.ini:; http://php.net/mysqli.max-persistent
cli/php.ini:mysqli.max_persistent = -1
cli/php.ini:; http://php.net/mysqli.allow_local_infile
cli/php.ini:;mysqli.allow_local_infile = On
cli/php.ini:; http://php.net/mysqli.allow-persistent
cli/php.ini:mysqli.allow_persistent = On
cli/php.ini:; http://php.net/mysqli.max-links
cli/php.ini:mysqli.max_links = -1
cli/php.ini:; http://php.net/mysqli.cache_size
cli/php.ini:mysqli.cache_size = 2000
cli/php.ini:; Default port number for mysqli_connect().  If unset, mysqli_connect() will use
cli/php.ini:; http://php.net/mysqli.default-port
cli/php.ini:mysqli.default_port = 3306
cli/php.ini:; http://php.net/mysqli.default-socket
cli/php.ini:mysqli.default_socket =
cli/php.ini:; http://php.net/mysqli.default-host
cli/php.ini:mysqli.default_host =
cli/php.ini:; http://php.net/mysqli.default-user
cli/php.ini:mysqli.default_user =
cli/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
cli/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
cli/php.ini:; http://php.net/mysqli.default-pw
cli/php.ini:mysqli.default_pw =
cli/php.ini:mysqli.reconnect = Off
  • Première étape: Activer le rapport d'erreurs.
  • maintenant, la page php que j'ai frappé lit: Fatal error: Call to undefined function mysqli_connect() in /var/www/php-mysql/insert_user.php on line 5
InformationsquelleAutor austinheiman | 2014-02-23