pgsql - Laravel 5.4 en PHP 7.0: Excepción PDO-No se pudo encontrar el controlador(MySQL)
pdoexception::("could not find driver") laravel (10)
Tengo un proyecto Laravel 5.4 en mi Ubuntu 14.04 (VPS con Plesk 12.5.30).
Después de crear la base de datos y configurar el archivo
.env
con la información requerida, ejecuté
php artisan migrate
y se lanzaron excepciones:
[Iluminar / Base de datos / Excepción de consulta]
no se pudo encontrar el controlador (SQL: seleccione * de information_schema.tables donde table_schema = pmaramaldb y table_name = migrations)[PDOException]
no se pudo encontrar el controlador
Mi archivo .env tiene:
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = pmaramaldb
DB_USERNAME = usuario
DB_PASSWORD = contraseña
He seguido la mayoría de las guías para resolver este error y no hubo ningún resultado positivo:
Habilitación de la solución de extensión:
El archivo php.ini se genera automáticamente, supongo que esto está hecho por Plesk. Al comienzo del archivo dice:
; ¡ATENCIÓN!
;
; NO MODIFIQUE ESTE ARCHIVO PORQUE FUE GENERADO AUTOMÁTICAMENTE,
; Así que todos sus cambios se perderán la próxima vez que se genere el archivo.
Así que lo he intentado de todos modos. Después de eso, reinicié Apache y luego intenté nuevamente ... No funcionó.
Instalación de la solución php7.0-mysql:
También he intentado instalar MySQL en caso de que no sea así:
usuario @ servidor: / var / www / vhosts $ sudo apt-get install php7.0-mysql
Leyendo lista de paquetes ... Hecho
Creando árbol de dependencias
Leyendo la información del estado ... Hecho
php7.0-mysql ya es la versión más nueva.
0 actualizados, 0 se instalarán, 0 para eliminar y 67 no actualizados.
** Solución de instalación de SQL Lite: **
También lo intenté como dice el
enlace de pregunta
:
sudo apt-get install php5-sqlite
y el resultado fue:
usuario @ servidor: /var/www/vhosts/system/maramal.io/etc$ sudo apt-get install php5-sqlite
Leyendo lista de paquetes ... Hecho
Creando árbol de dependencias
Leyendo la información del estado ... Hecho
php5-sqlite ya es la versión más nueva.
0 actualizados, 0 se instalarán, 0 para eliminar y 67 no actualizados.
Solución de descarga automática de Composer:
Tampoco funcionó.
He intentado el
composer dump-autoload
y no funcionó.
Después de ejecutar el comando
php -i
:
DOP
Soporte PDO => habilitado
Controladores PDO =>
...
Versión PHP => 5.6.30-1 + deb.sury.org ~ trusty + 1
Bueno, no estoy seguro de si esto tiene algo que ver con el error, pero la versión que se muestra al ejecutar
php -v
es:
usuario @ servidor: ~ / ruta $ php -v
PHP 5.6.30-1 + deb.sury.org ~ trusty + 1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
con Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, por Zend Technologies
Como solución alternativa, asegúrese de haber instalado php7-mysql
intenta ejecutar el comando a continuación
sudo apt install php7.0-mysql
En realidad, estoy bastante seguro de que no conoce sus versiones de PHP y utilizó las rutas incorrectas:
Para la versión PHP de su proveedor (5.6 de sury.org), usaría comandos PHP como "/ usr / bin / php", pero cuando usa versiones PHP diferentes, como por ejemplo las de Plesk, entonces tiene diferentes caminos:
/opt/plesk/php/5.2/bin/php -v
/opt/plesk/php/5.3/bin/php -v
/opt/plesk/php/5.4/bin/php -v
/opt/plesk/php/5.5/bin/php -v
/opt/plesk/php/5.6/bin/php -v
/opt/plesk/php/7.0/bin/php -v
/opt/plesk/php/7.1/bin/php -v
Su PHP: los comandos para posibles versiones adicionales de PHP (7.0 y 7.1 si instaló las versiones de PHP pPA PRINCIPALES de sury.org desde https://launchpad.net/~ondrej/+archive/ubuntu/php ) serían:
/usr/bin/php7.0 -v
/usr/bin/php7.1 -v
Muestre los módulos instalados para cada versión de PHP con la cadena de opción "-m" y use la cadena de opción "-i" para obtener información (ejemplo):
/opt/plesk/php/7.0/bin/php -m
/opt/plesk/php/7.0/bin/php -i
or
/usr/bin/php7.0 -m
/usr/bin/php7.0 -i
Para usar el "compositor", seguramente también usarías la ruta COMPLETA de tu ejecutable PHP (ejemplo):
/opt/plesk/php/7.0/bin/php composer-setup.php
or
/usr/bin/php7.0 composer-setup.php
"Compositor" adicional - los comandos son entonces:
/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED
or
/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED
Falta el controlador de la base de datos. Para resolver el probelem
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
Hay un conflicto entre el PHP que usa Apache y el PHP que está vinculado a la línea de comando. (Sucede más a menudo que debería ser honesto).
Lo que generalmente se hace es:
which php
Esto le indica qué php se ejecutará cuando se ejecute en la línea de comando.
por ejemplo
/usr/bin/php
mv /usr/bin/php /usr/bin/php.old
Luego vincule o copie la versión correcta de PHP a una ruta ejecutable:
ln -s /path/to/php/bin/php /usr/bin/php
o lo siguiente también debería funcionar.
cp /path/to/php/bin/php /usr/bin/php
También sugerido si desea poder instalar modificaciones manualmente:
ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config
De esta manera, su CLI coincidirá con su servidor web.
Actualizar:
Si como se indica en esta respuesta, si está utilizando Ubuntu con múltiples instalaciones alternativas de PHP, puede hacer:
sudo update-alternatives --set php /usr/bin/php<version>
sudo update-alternatives --set phar /usr/bin/phar<version>
sudo update-alternatives --set phar.phar /usr/bin/phar.phar<version>
sudo update-alternatives --set phpize /usr/bin/phpize<version>
sudo update-alternatives --set php-config /usr/bin/php-config<version>
Ok, una vez experimenté este error ... No sé por qué, pero parece que en php 7.3 hay un problema en relación con los controladores o algo allí, lo que hice fue volver a php 7.2 y todo funcionó bien ...
Puedes probar estos siguientes comandos
php artisan cache:clear
php artisan config:clear
Luego reinicie su servidor apache.
Luego,
.env
configurar su archivo
.env
Tuve el mismo escenario que tú. Resolví el mío lo siguiente:
1) en su terminal, escriba
php --ini
esto generará la ruta actual del archivo de configuración php.ini.
2) edite php.ini usando vim o su editor preferido.
vim /etc/php.ini
tenga en cuenta que /etc/php.ini es su archivo de ruta para su php.ini. Puede ser diferente en su máquina.
3) find ; extension = php_pdo_mysql.dll y descomente quitando el punto y coma (;)
4) guarda tus cambios de php.ini
** 5) reinicie el servidor web para aplicar los cambios
sudo systemctl restart apache2
** 6) Ahora ejecuta tu comando.
php artesanal migrar
Espero que esto te ayude.
en Linux hacer así
Primero verifique su versión de PHP de esta manera:
php -v
después de obtener el número de versión, por ejemplo, obtengo 7.1 y luego instalo así
sudo apt-get install php7.1-sqlite //for laravel testing with sqlite
sudo apt-get install php-mysql //for default mysql
sudo apt-get install php7.1-mysql //for version based mysql
sudo apt-get install php7.1-common //for other necessary package for php
y necesita reiniciar apache2
sudo service apache2 restart
limpiar el caché artesanal
php artisan cache:clear
y
php artisan migrate:refresh
Eso es