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 案例)的主要内容,如果未能解决你的问题,请参考以下文章