2009-03-20 44 views
62

que estoy haciendo un tutorial y estoy consiguiendo este error:Fatal error: Class 'MySQLi' no encontrado

Fatal error: Class 'MySQLi' not found (LONG URL) on line 8

El código en la línea 8 es:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error()); 

vi en línea alguien dijo a ver si estaba activado en mi phpinfo(), pero no había nada en la lista de "mysqli".

Además, estoy corriendo la versión de PHP 5.2.5

+0

relacionado: http://stackoverflow.com/questions/19305919/php-mysqli-works-in-command-line-but-not-on-pages –

Respuesta

62

suena como usted sólo tiene que install MySQLi.

Si cree que lo ha hecho y todavía tiene un problema, publique su sistema operativo y cualquier otra cosa que pueda ayudar.

+9

En AWS, acaba de ejecutar ['sudo yum install php- mysqli'] (http://stackoverflow.com/a/23713997/111307) – bobobobo

41

se puede comprobar si las bibliotecas mysqli están presentes mediante la ejecución de este código:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { 
    echo 'We don\'t have mysqli!!!'; 
} else { 
    echo 'Phew we have it!'; 
} 
+4

Todavía me sale "No tenemos mysqli !!!" incluso después de ejecutar 'sudo apt-get install php5-mysqlnd'? –

8

Además de descomentando la php_mysqli.dll extensión en php.ini , también descomente la directiva extension_dir en php.ini y especifique su ubicación:

extension_dir = "C:\software\php\dist\ext" 

Esto lo hizo funcionar para mí.

+0

Brillante, muchas gracias – SobiborTreblinka

+0

Me funcionó, pero con './Ext' que es la ruta relativa. Y tuve que renombrar 'php.ini-development' a' php.ini' y descomentar en ese archivo 'extension = php_mysqli.dll'. Oh chico, no te extrañé PHP. – Overdrivr

0

Algunas distribuciones (como Gentoo) admiten varias instalaciones de PHP, y debe asegurarse de que está utilizando una con mysqli instalado y habilitado.

en Gentoo, que habían instalado una nueva PHP (con el parámetro USE mysqli permitido), pero necesaria para activar la nueva versión de PHP (mysqli desde el viejo debe haber estado desaparecido):

# eselect php list apache2 
    [1] php5.3 * 
    [2] php5.5 
# eselect php set apache2 2 
You have to run `/etc/init.d/apache2 restart' for the changes to take effect 
# /etc/init.d/apache2 restart 
33

Si usted está en Ubuntu, ejecute:

sudo apt-get install php5-mysqlnd 
+4

¡Y no olvide reiniciar Apache después de esto! – fracz

+0

@fracz Reiniciar Apache es la parte que olvidé. Solo reinicié MySQL. Gracias. – James

+0

funcioné eso. el error persiste –

4

Mi OS es Ubuntu. He resuelto este problema mediante el uso de:

sudo apt-get install php5-mysql 
0
<?php /* If the error is due to calling mysqli in a class */ 

    class dbconnect extends mysqli{ 

     private $host = 'localhost'; 
     private $user = 'root'; 
     private $pass = ''; 
     private $db = 'test'; 

     public function __construct() { 
      parent::__construct($this->host, $this->user, $this->pass, $this->db); 

      if (mysqli_connect_error()) { 
       die('Connect Error (' . mysqli_connect_errno() . ') ' . 
        mysqli_connect_error()); 
      } 
     } 
    } 
?> 
10

Si llama "nueva mysqli (..)" desde dentro de una clase que se namespaced, es posible que aparezca un error similar Fatal error: Class 'foo\bar\mysqli' not found in.La manera de solucionar este problema es establecer explícitamente que el espacio de nombres raíz con una barra invertida anterior, así:

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error()); 
0

Esto solucionó el error inicial 'no encontrado' para mí. Tenga en cuenta la barra invertida, funciona como un sueño ahora. Solo es necesario cuando se usa un espacio de nombres pero ¿quién no?

$ mysqli = new \ MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) o die (mysqli_error());

0

I comprobado todos arriba y no funcionó para mí,

Hay algunos pasos que he encontrado.

que utilizan Versión PHP 5.5.9-1ubuntu4.17 en Ubuntu 14.04

primer cheque de la carpeta

#ls /etc/php5/mods-available/ 
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini 

Si no contenía mysqli.ini, lea otra respuesta para instalarlo,

abierto php.ini encontrar extension_dir

En mi caso, debo establecer extension_dir = /usr/lib/php5/20121212

y reiniciar apache2: /ect/init.d/apache2 restart

0

pensé que podría ayudar a nadie con el mismo problema utilizando servidores Namesco. He estado tratando de solucionar este problema después de mover una base de datos de mi servidor local en la PC de casa a namesco. No lo ayudaron dijeron que era un problema de codificación.

  • Sin embargo, era fácil de arreglar desde su interfaz CPANEl LINUX .
  • Haga clic en php.
  • luego haga clic en los módulos de php y en su lista de módulos preinstalados simplemente haga clic en la casilla para mysqli.
  • A continuación, haga clic en guardar. (No es necesario cambiar el código si funcionó en otro servidor.)

Lamentablemente, sus artículos de soporte fueron una pérdida de tiempo. Después de leer esto fui a la interfaz del administrador con una nueva determinación.

Gracias a todos.

Cuestiones relacionadas