Symfony3 演示项目不起作用:PDO 异常找不到驱动程序(sqlite 案例)

Posted

技术标签:

【中文标题】Symfony3 演示项目不起作用:PDO 异常找不到驱动程序(sqlite 案例)【英文标题】:Symfony3 demo project don't work: PDO Exception Could not find driver (sqlite case) 【发布时间】:2016-07-08 15:33:04 【问题描述】:

最近我通过命令创建了 Symfony3 项目:

symfony new myproject

项目使用mysql,运行良好。

之后我创建了演示项目来研究 symfony 最佳实践:

symfony demo

项目已成功创建。 Config.php 显示,一切正常。 app_dev.php 在我的网络浏览器中成功打开。但是当我尝试打开“http://localhost/app_dev.php/ru/blog/”(应用程序的公共部分)时,会出现 500 内部服务器错误。 /app_dev.php/ru/blog/ 显示:

错误信息:

驱动发生异常:找不到驱动

500 内部服务器错误 - DriverException

2 个关联的例外:

PDO异常 »

PDO异常 »

调用堆栈中的关键部分:

CRITICAL - 未捕获的 PHP 异常 Doctrine\DBAL\Exception\DriverException:“驱动程序中发生异常:找不到驱动程序”,位于 /var/www/symfony_demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ AbstractSQLiteDriver.php 第 85 行

我已阅读有关 PDO 异常的所有堆栈交换问题,但没有一个对我有帮助...

我使用 Ubuntu、nginx

安装了Mysql、sqlite、php5-sqlite、sqlite3、libsqlite3-dev。重启 Nginx 和 php5-fpm。用于 PDO Wez Furlong 的 php.ini SQLite 3.x 驱动程序。

演示应用参数.yml:

database_driver: pdo_sqlite
database_host: 127.0.0.1
database_port: null
database_name: null
database_user: root
database_password: null
database_path: '%kernel.root_dir%/data/blog.sqlite'
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: en
secret: secret_value_for_symfony_demo_application

php.ini 文件:

[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0

[sqlite3]
;sqlite3.extension_dir =

我不知道问题的原因是什么以及如何解决。

请帮忙!

【问题讨论】:

运行php app/check.php php app/check.php 显示 3 个错误:app/cache,app/logs 必须是可写的,时区应该设置。但这都是关于 cli 的。 Web 服务器权限和时区正确。 web/config.php 显示“你的配置看起来很适合运行 Symfony” 仔细检查 phpinfo()(如果你在开发环境中运行 symfony - 开发者工具栏中有 phpinfo 的链接) - 如果你同时启用了 pdo 和 pdo_sqlite 扩展 另外,检查 config.yml 中是否有 driver 设置为 "%database_driver%"(所以它从 parameters.yml 中获取),因为在新的 symfony 安装中默认有 pdo_mysql 跨度> doctrine dbal 驱动程序是 %database_driver%。 php.ini pdo 驱动器:mysql 仅在启用列中 【参考方案1】:

只需安装:

sudo apt install php-sqlite3

【讨论】:

【参考方案2】:

对于我在 ubuntu 中的工作

sudo apt-get install php5.6-sqlite

【讨论】:

使用 PHP7 和 sudo apt install php7.0-sqlite3 为我工作。一个更通用/抽象的解决方案是这样的:sudo apt-get install phpX.Y-sqlite【参考方案3】:

在我的系统上,这行得通。可能并不适合所有人:

    今年早些时候我使用过 Symfony 和 PostGRESQL 今天我做了一个我认为干净的 symfony 项目安装,使用 composer 和 symfony.com 上的说明 我收到了您描述的错误\ 我查看了所有内容。终于看到,出于某种原因,我的 .env 被设置为使用 postGreSQL。从 /.env 文件中注释掉该行并将其设置为 SQLite:
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
# DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
###< doctrine/doctrine-bundle ###

【讨论】:

以上是关于Symfony3 演示项目不起作用:PDO 异常找不到驱动程序(sqlite 案例)的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO事务回滚不起作用

Symfony 3.4 和模态表单验证

Bootstrap 3 在 Symfony3 中不起作用

路由在 Symfony 3.4 中不起作用

PHP 7.0 上的 Laravel 5.4:PDO 异常 - 找不到驱动程序 (MySQL)

方法通道在 Flutter 模块中不起作用