Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2无法连接到sqlite_Php_Mysql_Sqlite_Symfony_Behat - Fatal编程技术网

Php Symfony2无法连接到sqlite

Php Symfony2无法连接到sqlite,php,mysql,sqlite,symfony,behat,Php,Mysql,Sqlite,Symfony,Behat,我试图在symfony2中的behat测试中使用sqlite base。就im am而言,symfony2中的behat可以找到我的基础,并可以在其中创建装置。问题是我的测试站点无法连接到此基地 这是我的配置测试.yml: doctrine: dbal: driver: pdo_sqlite host: 127.0.0.1 dbname: "%database_name%_test" path: te

我试图在symfony2中的behat测试中使用sqlite base。就im am而言,symfony2中的behat可以找到我的基础,并可以在其中创建装置。问题是我的测试站点无法连接到此基地

这是我的
配置测试.yml

doctrine:
    dbal:
        driver:   pdo_sqlite
        host:     127.0.0.1
        dbname:   "%database_name%_test"
        path:     tests/eg_test.db
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
default:
    suites:
        default:
            paths:
                features: '%paths.base%/features'
                bootstrap:  '%paths.base%/features/bootstrap'
            contexts:
                - FeatureContext: ~
                - EwidencjaContext:
                    userManager: '@fos_user.user_manager'
                    em: '@doctrine.orm.entity_manager'
                    packageManager: '@em.package_manager'
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url:  http://nginx/app_test.php
            goutte: ~
            selenium2:
                browser: "chrome"
                wd_host: http://selenium_chrome:4444/wd/hub
                capabilities: { "browserName": "chrome", "browser": "chrome"}
        Bex\Behat\ScreenshotExtension:
            image_drivers:
                local:
                    screenshot_directory: tests/features/images/
                    clear_screenshot_directory: true
这是我的
config.yml

doctrine:
    dbal:
        driver:   pdo_sqlite
        host:     127.0.0.1
        dbname:   "%database_name%_test"
        path:     tests/eg_test.db
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
default:
    suites:
        default:
            paths:
                features: '%paths.base%/features'
                bootstrap:  '%paths.base%/features/bootstrap'
            contexts:
                - FeatureContext: ~
                - EwidencjaContext:
                    userManager: '@fos_user.user_manager'
                    em: '@doctrine.orm.entity_manager'
                    packageManager: '@em.package_manager'
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url:  http://nginx/app_test.php
            goutte: ~
            selenium2:
                browser: "chrome"
                wd_host: http://selenium_chrome:4444/wd/hub
                capabilities: { "browserName": "chrome", "browser": "chrome"}
        Bex\Behat\ScreenshotExtension:
            image_drivers:
                local:
                    screenshot_directory: tests/features/images/
                    clear_screenshot_directory: true
这是我的
行为.yml

doctrine:
    dbal:
        driver:   pdo_sqlite
        host:     127.0.0.1
        dbname:   "%database_name%_test"
        path:     tests/eg_test.db
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
default:
    suites:
        default:
            paths:
                features: '%paths.base%/features'
                bootstrap:  '%paths.base%/features/bootstrap'
            contexts:
                - FeatureContext: ~
                - EwidencjaContext:
                    userManager: '@fos_user.user_manager'
                    em: '@doctrine.orm.entity_manager'
                    packageManager: '@em.package_manager'
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url:  http://nginx/app_test.php
            goutte: ~
            selenium2:
                browser: "chrome"
                wd_host: http://selenium_chrome:4444/wd/hub
                capabilities: { "browserName": "chrome", "browser": "chrome"}
        Bex\Behat\ScreenshotExtension:
            image_drivers:
                local:
                    screenshot_directory: tests/features/images/
                    clear_screenshot_directory: true
这是我尝试登录我的站点后返回的日志。不管用户是否存在。所以这不是错误的密码或类似的错误。似乎网站只是不连接到基地

[2017-03-27 10:22:09]请求信息:匹配路径“fos\u用户\u安全检查”。{“路由”:“fos_用户安全检查”,“路由参数”:{“控制器”:“fos\UserBundle\controller\SecurityController::checkAction”,“路由”:“fos_用户安全检查”},“请求uri”:“方法”:“POST”}[] [2017-03-27 10:22:10]security.INFO:身份验证请求失败。{“异常”:“[object](Symfony\Component\Security\Core\exception\AuthenticationServiceException(代码:0):在驱动程序SQLSTATE[HY000][14]中发生异常无法打开位于/var/www/vendor/symfony/symfony/src/symfony/Component/Security/Core/Authentication/Provider/DaoAuthenticationProvider.php:94,条令\DBAL\Exception\ConnectionException(代码:0):驱动程序中发生异常:SQLSTATE[HY000][14]无法打开位于/var/www/vendor/doctrine/dbal/lib/doctrine/dbal/Driver/AbstractSQLiteDriver.php:82,doctrine\dbal\Driver\PDOException(代码:14):SQLSTATE[HY000][14]的数据库文件无法打开位于/var/www/vendor/doctrine/dbal/lib/doctrine/dbal/Driver/PDOConnection.php:47,PDOException(代码:14):SQLSTATE[HY000][14]无法打开位于/var/www/vendor/doctor/dbal/lib/doctor/dbal/Driver/PDOConnection.php:43)“的数据库文件 [2017-03-27 10:22:10]安全性。调试:身份验证失败,已触发重定向。{“失败路径”:“/登录”}[] [2017-03-27 10:22:10]请求信息:匹配路径“fos\u用户\u安全登录”。{“路由”:“fos_用户\安全\登录”,“路由\参数”:{“控制器”:“fos\UserBundle\controller\SecurityController::loginAction”,“路由”:“fos_用户\安全\登录”},“请求\ uri”:“方法”:“获取”}[] [2017-03-27 10:22:10]security.INFO:使用匿名令牌填充令牌存储。[][]

这是我尝试从浏览器登录时在我的站点上遇到的错误:

由于系统问题,无法处理身份验证请求

尝试注册新用户时出现错误:

驱动程序中发生异常:SQLSTATE[HY000][14]无法打开数据库文件


我创建了我的sqlite数据库,与我在prod上使用的标准mysql数据库非常接近。之后我使用了
bin/console原则:schema:update--force--env=test
。我的数据库获得了良好的文件mod(-rwxrwxr-x),并由正确的用户和组使用。

将您的config_test.yml更改为:

doctrine:
    dbal:
        connections:
            default:
                driver: pdo_sqlite
                path: %kernel.cache_dir%/default.db
                charset: UTF8

然后授予正确的权限显示在这里:您将根据您的操作系统在第二个或第三个位置运行命令。

如果您转到parameters.yml文件,您应该会看到路径,如下所示:
数据库路径:'%kernel.project\u dir%/var/data/data.sqlite'
,另一个建议是:在
/var
中创建一个目录,并将
数据.sqlite
文件放入其中


希望有帮助:)

这很有效!谢谢我只是不明白一件事。此default.db是自动生成的。因为它在缓存中,如果我清除缓存,它就会丢失。我如何告诉它使用我的表和装置生成base?好的,我在behat中找到了从图像重置数据库的代码<代码>/***@before scenario**@给定数据库是干净的*/公共函数数据库是干净的({exec('php app/console cache:clear--env=test');exec('php app/console原则:数据库:create--env=test--force');exec('php app/console原则:schema:update--env=test--force'));exec('cp tests/features/database/eg_test.db var/cache/test/default.db');}您可以使用Symfony+Behat这样做,如下所示: