php artisan migrate throwing [Excepción de PDO] No se pudo encontrar el controlador - Usando Laravel


Tengo una mala experiencia al instalar laravel. Sin embargo, pude hacerlo y pasar al siguiente nivel. Usé generadores y creé mis migraciones. Pero cuando escribo el último comando

php artisan migrate

Está lanzando una PDOException - no se pudo encontrar el controlador.

       'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

Esa es mi configuración en config/database.php.

Intenté buscar en los foros de stackoverflow y laravel y la gente sugiere que es un problema de PDO y no de artisan o php - Seguí esas sugerencias como agregar

extension=pgsql.so
extension=pdo_pgsql.so

En php.ini

No hay resultado positivo. Siempre dice [PDOException]could not find driver.

Puede alguien por favor ayudar a resolver esto.

Entorno que estoy usando: Mac, laravel 4, MAMP PRO con php 5.4.4

Author: Vamshi Vangapally, 2014-03-17

21 answers

Puede usar

sudo apt-get install php7-mysql

O

sudo apt-get install php5-mysql

O

sudo apt-get install php-mysql

Esto funcionó para mí.

 40
Author: narendro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-04 22:10:29

Esto funcionó para mí:

sudo apt-get install php5-sqlite

Esto instaló sqlite para php5, luego ejecuté el comando php artisan migrate nuevamente y funcionó perfectamente.

 19
Author: Alejandro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 02:37:49

Necesita habilitar específicamente el complemento pdo_mysql. Suponiendo que está utilizando una instalación estándar de PHP, entonces generalmente simplemente necesitaría agregar esto a su PHP.archivo ini:

extension=pdo_mysql.so

Debe asegurarse de que este archivo existe en el directorio de extensión.

Agregar pdo_pgsql.so no ayuda porque eso es para PostgreSQL.

Además, debe asegurarse de reiniciar el servidor web después de realizar los cambios en el archivo ini PHP, ya que los cambios pueden no ser reflejados de otra manera.

 15
Author: JaTochNietDan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-17 19:44:16

Se encontró con el mismo problema aquí, y resulta que esto se debe a que PHP en la línea de comandos utiliza un archivo php.ini diferente de la versión del navegador, por lo que parece que está cargando la extensión correctamente cuando se mira phpinfo() en un navegador.

De acuerdo con esta respuesta , solo tiene que ejecutar:

php --ini

En la línea de comandos, que le indicará la ruta al php.ini actualmente cargado (probablemente un archivo php-cli.ini ubicado en el mismo lugar que su php.ini file).

Una vez que hayas encontrado eso, modifícalo con las extensiones pdo que quieras (en este caso para MySQL):

extension=pdo_mysql.so

O, para cualquier otro usuario que esté en Windows usando algún tipo de servidor WAMP, probablemente se vea así:

extension=php_pdo_mysql.dll
 7
Author: Leith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:20

Creo que te perdiste el controlador mysql para php5. Ejecutar el siguiente comando:

sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
 6
Author: Robin Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-05 13:31:51

Por favor revise su archivo Laravel .env también. Asegúrese de DB_CONNECTION=mysql, de lo contrario no funcionará con MySQL. Intentó cargar algo más.

 4
Author: Thach Van,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-27 15:03:49

Tuvo el mismo problema y simplemente calculó que el sitio web se está ejecutando bajo el php de MAMP, pero cuando llama al comando, ejecuta el mac(si no se modifica la ruta de bash). tendrá problemas cuando Mac no tenga esas extensiones.

Ejecute php-i para averiguar las extensiones cargadas, e instale aquellas que se perdió. o ejecutar " /Applications/MAMP/bin/php/php5.3.6/bin/php artisan {comando}' para uso MAMP del

 2
Author: Entrust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-02 11:49:59

También estaba recibiendo el mismo error > > " [PDOException]
no se pudo encontrar el controlador "

Después de eso usé muchos comandos pero no recibí ninguna ayuda

Finalmente usé el siguiente comando, que resolvió mi problema.

Sudo apt-get install php5-sqlite

 2
Author: hmmm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-14 07:37:48

Laravel Testing con sqlite necesita controladores php pdo sqlite

Para Ubuntu 14.04

sudo apt-get install php5-sqlite
sudo service apache2 restart

En ubuntu 16.04 no hay php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart
 2
Author: Sagar Koshti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-19 12:15:45

Te falta un conductor de DOP.

Primero instale el controlador

Para ubuntu: Para la base de datos mysql.

Sudo apt-get install php5. 6-mysql / php7.2-mysql

También puede buscar otros sistemas de bases de datos.

También puede buscar el controlador:

Sudo apt-cache search drivername

Then Run the cmd php artisan migrate
 2
Author: abhishek subedi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 08:28:48

Estoy deshaciendo ubuntu 14.04

El comando debajo resolvió este problema para mí.

Sudo apt-get install php-mysql

En mi caso, después de actualizar mi versión de php de 5.5.9 a 7.0.8 recibí este error incluyendo otros dos errores.

Errores:

  1. Laravel / framework v5.2. 14 requiere ext-mbstring * -> la extensión PHP solicitada mbstring falta en su sistema.

  2. Phpunit / phpunit 4.8.22 requiere ext-dom * - > el la extensión PHP solicitada dom no está en su sistema.

  3. [PDOException]
    no se pudo encontrar el controlador

Soluciones:

Instalé estos paquetes y mis problemas desaparecieron.

Sudo apt-get install php-mbstring

Sudo apt-get install php-xml

Sudo apt-get install php-mysql

 1
Author: sh6210,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-02 13:18:17

Debe estar instalando la última versión de php mysql en mi caso soy install php7.1-mysql

Prueba esto

sudo apt-get install php7.1-mysql

Estoy usando la última versión de laravel

 1
Author: JalalKun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-23 03:38:09

Esto funcionó conmigo: (para pgsql: use 'pgsql' en lugar de 'mysql')

Paso 1)

sudo apt-get install php-mysql

Paso 2)

php artisan config:clear

Paso 3)

php artisan config:cache

Paso 4)
A continuación, reinicie su servidor, y generar clave de nuevo y migrarlo, Su Hecho

 1
Author: Praveen Mendegar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-04 10:49:16

Para futuros buscadores. En FreeBSD prueba el siguiente

pkg_info | grep php5-pdo_mysql

Si ves la línea vacía a cambio, haz lo siguiente:

cd /usr/ports/databases/php5-pdo_mysql

Y el hacer la instalación

make install clean

Luego simplemente reinicie su apache y habrá terminado

Por ejemplo sudo /usr/local/etc/rc.d/apache22 restart

 0
Author: Aleksey Potapov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 20:15:39

Instalarlo mediante este comando

sudo apt-get install php5-gd

Esto funcionó para mí.

 0
Author: briankip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-21 19:46:48

En mi caso no era consciente de que el PHP ejecutado por Apache era diferente del ejecutado por CLI. Ese podría ser el caso si durante la configuración en httpd.conf especificó un módulo PHP, no siendo el predeterminado que usa su CLI.

 0
Author: Sven P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-03 11:43:50

He encontrado la solución adecuada para este error! O no tiene ninguna base de datos instalada o su base de datos predeterminada en este archivo config/database.php se establece en alguna otra base de datos como esta

'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2

Cambie el valor predeterminado a cuál ha instalado o instale esa base de datos que se hace por defecto! Había instalado mysql y php artisan migrate trabajó después de que cambié esa línea a esta:

'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
 0
Author: lewis4u,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-28 11:51:55

También estaba recibiendo el mismo error > > "[PDOException] no se pudo encontrar el controlador "

Me di cuenta de que el php estaba apuntando a /usr/bin/php en lugar del lampp /opt/lampp/bin/php, así que simplemente creé y alias

Alias php="/opt/lampp/bin / php "

También tuvo que hacer actualización a la .env archivo para asegurar las credenciales de acceso a la base de datos se actualizaron.

Y adivina qué, ¡funcionó!

 0
Author: lightup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-07 09:24:52

Tuve este problema en debian. El problema era que estaba usando el repositorio dotdeb para paquetes PHP más recientes. Por alguna razón, actualizó la cli de php a 7.0, mientras que el binario php web permaneció php 5.6. Usé esta respuesta para vincular el binario de la línea de comandos de php a la versión 5.6, así:

$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
 0
Author: user151841,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 12:22:39

Si está usando Laravel 5.x, y el error es de intentar modificar los atributos de una columna, es posible que el error provenga de un prerrequisito faltante.

Prueba esto:

 composer require doctrine/dbal

Luego intente ejecutar sus migraciones.

Desde aquí: https://laravel.com/docs/master/migrations#modifying-columns

 0
Author: Arlyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-08 15:37:38

Tengo este error para PostgreSQL y la solución es:

sudo apt-get install php7.1-pgsql

Solo necesita usar su versión de PHP instalada, la mía es 7.1. Esto ha solucionado el problema de PostgreSQL.

 0
Author: MKJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 09:06:51