我正在服务器上开发一个网站我只能访问MySQL和FTP,所以我运行的所有命令都是通过b374k php shell。我遇到了SQL驱动程序的Laravel问题。我尝试切换到文件托管的SQLite(在database / database.sqlite中),但抛出的异常与使用MySQL时相同。输入&控制台的输出如下:
php artisan migrate:refresh --seed
[Illuminate\Database\QueryException]
could not find driver (SQL: select * from sqlite_master where type = 'table ' and name = migrations)
[Doctrine\DBAL\Driver\PDOException]
could not find driver
[PDOException]
could not find driver
服务器上安装的Apache扩展包括:
/etc/php/5.6/apache2/conf.d/10-mysqlnd.ini,
/etc/php/5.6/apache2/conf.d/10-opcache.ini,
/etc/php/5.6/apache2/conf.d/10-pdo.ini,
/etc/php/5.6/apache2/conf.d/15-xml.ini,
/etc/php/5.6/apache2/conf.d/20-calendar.ini,
/etc/php/5.6/apache2/conf.d/20-ctype.ini,
/etc/php/5.6/apache2/conf.d/20-curl.ini,
/etc/php/5.6/apache2/conf.d/20-dom.ini,
/etc/php/5.6/apache2/conf.d/20-exif.ini,
/etc/php/5.6/apache2/conf.d/20-fileinfo.ini,
/etc/php/5.6/apache2/conf.d/20-ftp.ini, /etc/php/5.6/apache2/conf.d/20-gd.ini,
/etc/php/5.6/apache2/conf.d/20-gettext.ini,
/etc/php/5.6/apache2/conf.d/20-iconv.ini,
/etc/php/5.6/apache2/conf.d/20-json.ini,
/etc/php/5.6/apache2/conf.d/20-mbstring.ini,
/etc/php/5.6/apache2/conf.d/20-mcrypt.ini,
/etc/php/5.6/apache2/conf.d/20-mysql.ini,
/etc/php/5.6/apache2/conf.d/20-mysqli.ini,
/etc/php/5.6/apache2/conf.d/20-pdo_mysql.ini,
/etc/php/5.6/apache2/conf.d/20-phar.ini,
/etc/php/5.6/apache2/conf.d/20-posix.ini,
/etc/php/5.6/apache2/conf.d/20-readline.ini,
/etc/php/5.6/apache2/conf.d/20-shmop.ini,
/etc/php/5.6/apache2/conf.d/20-simplexml.ini,
/etc/php/5.6/apache2/conf.d/20-sockets.ini,
/etc/php/5.6/apache2/conf.d/20-sysvmsg.ini,
/etc/php/5.6/apache2/conf.d/20-sysvsem.ini,
/etc/php/5.6/apache2/conf.d/20-sysvshm.ini,
/etc/php/5.6/apache2/conf.d/20-tokenizer.ini,
/etc/php/5.6/apache2/conf.d/20-wddx.ini,
/etc/php/5.6/apache2/conf.d/20-xmlreader.ini,
/etc/php/5.6/apache2/conf.d/20-xmlwriter.ini,
/etc/php/5.6/apache2/conf.d/20-xsl.ini,
/etc/php/5.6/apache2/conf.d/20-zip.ini
可能是什么问题,我该如何解决? (我无法访问root bash)
答案 0 :(得分:31)
如果可以,请运行:
composer update
composer require doctrine/dbal
看起来您缺少依赖
编辑:
您可能需要在php.ini文件中注释掉以下内容。
;extension=pdo_mysql.so
取自这篇文章: Laravel 5 PDOException Could Not Find Driver 。我认为在数字海洋上设置laravel时我必须做一些完全相同的事情。
答案 1 :(得分:28)
您的数据库驱动程序丢失了。解决问题
首先安装驱动程序
对于ubuntu:对于mysql数据库。
ComboBox
您还可以搜索其他数据库系统。
您也可以搜索驱动程序:
sudo apt-get install php5.6-mysql/php7.2-mysql
然后运行cmd sudo apt-cache search drivername
答案 2 :(得分:11)
运行我的测试套件时遇到了同样的错误。它之前工作但它升级后我停止了工作。所以我做了
sudo apt-get install php-sqlite3
并且有效。
答案 3 :(得分:6)
首先检查app.UseIdentityServerBearerTokenAuthentication(new
IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:44333",
ValidationMode = ValidationMode.ValidationEndpoint,
RequiredScopes = new[] { "read", "write" } // scopes
});
。如果你没有看到mysql驱动安装mysql php -m
您的结果将类似于:
sudo apt-cache search php-mysql
安装php- mysql驱动程序
php-mysql - MySQL module for PHP [default]
答案 4 :(得分:6)
错误:
找不到驱动程序(SQL:从__init__
中选择*,其中tests
=限制1)
我在laravel项目中遇到上述错误,我在Ubuntu 16.04上使用了Nginx服务器
此错误是因为缺少slug
驱动程序。要安装它,请键入以下命令。
php-mysql
请在上面的命令中指定您当前的sudo apt-get install php7.2-mysql
。
打开php version
文件,并取消注释下面的代码行(删除分号)。
php.ini
然后重新启动nginx和php服务
;extension=pdo_mysql
对我有用。
答案 5 :(得分:5)
在Ubuntu(18.04)中更简单
apt install php-mysql
完成。无需编辑任何.ini
文件。
编码愉快!
答案 6 :(得分:4)
我在Ubuntu 16.04中有一个类似的问题,对我有帮助的是我为php 7.2安装了php-mysql。如果您拥有php 7.2或根据您的PHP版本安装php mysql,我建议您运行以下命令。确保已安装DBAL软件包
apt-get install php7.2-mysql
systemctl restart apache2
答案 7 :(得分:2)
您需要在php.ini文件中启用这些扩展名
之前:
;extension=pdo_mysql
;extension=mysqli
;extension=pdo_sqlite
;extension=sqlite3
之后:
extension=pdo_mysql
extension=mysqli
extension=pdo_sqlite
extension=sqlite3
建议您还激活fileinfo扩展名,许多软件包都需要这样做。
答案 8 :(得分:1)
最后我解决了这个问题。服务器配置中有一个拼写错误,除了导致错误的php-cli路径外,所有到php可扩展程序的路径都很好。当我修复路径时,一切正常。
答案 9 :(得分:1)
用于 debian/ubuntu 上的 sqlite
PHP 7.1
sudo apt install php7.1-sqlite3
PHP 7.2
sudo apt install php7.2-sqlite3
PHP 7.3
sudo apt install php7.3-sqlite3
PHP 7.4
sudo apt install php7.4-sqlite3
答案 10 :(得分:1)
在Linux中,下载Mysql和Php
sudo apt install php-mysql
然后问题将会解决。
答案 11 :(得分:1)
如果您在sqlite run中运行测试
sudo apt install sqlite3 && sudo apt install php-sqlite3
如果在窗口中运行测试,则无需安装任何程序。仅配置您的phpunit.xml
答案 12 :(得分:1)
在使用sqlite 3时,我遇到了同样的问题。
$
sudo apt-get install php-sqlite3。$
的php artisan迁移。答案 13 :(得分:1)
解决方案1:
1. php -v
输出:PHP 7.3.11-1 + ubuntu16.04.1 + deb.sury.org + 1(cli)
2. sudo apt-get install php7.3-mysql
解决方案2:
检查您的数据库凭据,例如数据库名称,数据库用户,数据库密码
答案 14 :(得分:1)
在CentOS7中,我尝试这样做:yum install php-mysql
,然后编辑php.ini
答案 15 :(得分:1)
在我的情况下,我正在使用Ubuntu,所以我发现系统安装后没有安装php-sqlite3,
sudo apt-get install php7.2-sqlite3
答案 16 :(得分:0)
在Ubuntu或Windows中
路径php.ini
从; extension = pdo_mysql 中删除; 或 extension = php_pdo_mysql.dll 并添加 extension = pdo_mysql.so
重新启动 xampp 或 wampp
安装sudo apt-get安装php-mysql
和
php artisan迁移
答案 17 :(得分:0)
不是真正回答原始问题,但可能对某人有所帮助:
使用 docker 时必须执行:
docker-compose exec [NAME_OF_DOCKER_SERVICE] php artisan migrate
而不仅仅是php artisan migrate
只是想分享这个,因为我已经犯了几次这个错误
答案 18 :(得分:0)
这个错误发生在我使用 sail
进行开发时。在这种情况下,解决方案是在容器内运行命令
docker exec -it <app-container-id> php artisan migrate
app容器id大概是这样的:
<app-name>_laravel.test_1
答案 19 :(得分:0)
对于在 laravel 8 (ubuntu) 上运行的 php 8,运行 sudo apt install php8.0.3-mysql
然后重启 apache
sudo service apache2 restart
答案 20 :(得分:0)
就我而言,我的 php 路径与我的项目托管的 xampp php 路径不同。
所以我只是将系统路径从纯 php 路径更改为 xamppp 中的 php 路径,一切正常。
我在 Ubuntu 中运行这个命令
sudo ln -s /opt/lampp/bin/php /usr/bin/php
你可能像我一样安装了php,所以你需要先运行这个命令,然后再试一次
sudo rm /usr/bin/php
可能你的作曲家有问题,所以你也需要运行这个
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
答案 21 :(得分:0)
对于 :\php.ini 文件中的 Windows 8.1/10,您应该取消注释行“extension=pdo_mysql”
答案 22 :(得分:0)
在窗口OS中。我有php.ini文件的取消注释extension = pdo_mysql,它位于php.exe的同一目录下。之后它运作良好。
答案 23 :(得分:0)
在 Windows 上,我遵循与先前答案相同的路径。不同的是php.ini的路径通常和传统的不同,一般在Apache中。
为了找到 php.ini,我使用了以下路径:C:\tools\php80\php.ini
在那之后,我取消了 pdo extension files
的注释,迁移成功了。
答案 24 :(得分:0)
对我来说,这些步骤适用于使用 PHP 7.3 的 Ubuntu:
1. vi /etc/php/7.3/apache2/php.ini > uncomment:
;extension=pdo_sqlite
;extension=pdo_mysql
2. sudo apt-get install php7.3-sqlite3
3. sudo service apache2 restart
答案 25 :(得分:0)
对我来说,php.ini
还可以,但是我需要重新启动 php artisan serve
。
答案 26 :(得分:0)
我遇到了同样的问题,我取消了对extension=pdo_sqlite
的评论并运行了migration
,一切正常。
答案 27 :(得分:0)
一些有关升级php版本的人的其他信息。
这是使用 MySql 或 MariaDB 的 laravel框架。
将php版本从7.2升级到7.4后,我遇到了问题。
答案 28 :(得分:0)
您可能缺少sqlite或您要迁移的特定数据库驱动程序。
安装数据库驱动程序就可以了。您不一定需要编辑php.ini文件(尽管这也是修复它的一种方法)。
对于sqlite,请执行-> sudo apt-get install php-sqlite3
然后php artisan migrate
注意:我假设您已经安装了PHP和MySql
答案 29 :(得分:0)
如果您已安装新版本的php 7.2+,则必须在php.ini中取消注释此行 ; extension = pdo_mysql