繁体   English   中英

symfony OAuth2验证失败:未找到DTD

[英]symfony OAuth2 Validation failed: no DTD found

我使用本教程http://blog.tankist.de/blog/2013/07/17/oauth2-explained-part-2-setting-up-oauth2-with-symfony2-using-fosoauthserverbundle/

我有错误

php app/console doctrine:schema:update --dump-sql



  [Symfony\Component\Config\Exception\FileLoaderLoadException]                                                                                     
  Cannot import resource "/home/miejsce/public_html/src/Acme/DemoBundle/Resources/config/services.xml" from "/home/miejsce/public_html/app/config  
  /config.yml". (Unable to parse file "/home/miejsce/public_html/src/Acme/DemoBundle/Resources/config/services.xml".)                              






  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]                           
  Unable to parse file "/home/miejsce/public_html/src/Acme/DemoBundle/Resources/config/services.xml".  



  [InvalidArgumentException]                                                      
  [ERROR 94] Validation failed: no DTD found ! (in n/a - line 2, column 12)       
  [ERROR 5] Extra content at the end of the document (in n/a - line 7, column 1) 

services.xml fils是从手册中复制粘贴的,这里是源

<!-- src/Acme/DemoBundle/Resources/config/services.xml -->
<parameters>
    <parameter key="platform.entity.user.class">Acme\DemoBundle\Entity\User</parameter>
    <parameter key="platform.user.provider.class">Acme\DemoBundle\Provider\UserProvider</parameter>
</parameters>

<services>
<service id="platform.user.manager" class="Doctrine\ORM\EntityManager"
         factory-service="doctrine" factory-method="getManagerForClass">
    <argument>%platform.entity.user.class%</argument>
</service>

<service id="platform.user.repository"
         class="Acme\DemoBundle\Repository\UserRepository"
         factory-service="platform.user.manager" factory-method="getRepository">
    <argument>%platform.entity.user.class%</argument>
</service>

<service id="platform.user.provider" class="%platform.user.provider.class%">
    <argument type="service" id="platform.user.repository" />
</service>
</services>

我与手册仅存在一个差异-我添加

导入:**-{资源:@ AcmeDemoBundle / Resources / config / services.xml}

我认为需要config.yml

我在哪里可以出错?

UPDATE1

我将配置修改为yml

parameters:
    platform.entity.user.class: Acme\DemoBundle\Entity\User
    platform.user.provider.class: Acme\DemoBundle\Provider\UserProvider
services:
    platform.user.manager:
        class:            "%doctrine.entity_managers%"
        factory_service:  doctrine
        factory_method:   getManagerForClass
        arguments:
                    - "%platform.entity.user.class%"
    platform.user.repository:
        class:            Acme\DemoBundle\Repository\UserRepository
        factory_service:  platform.user.manager
        factory_method:   getRepository
        arguments:
                    - "%platform.entity.user.class%"

    platform.user.provider:
        class:            "%platform.user.provider.class%"
        arguments:
                    - "@platform.user.repository"

很抱歉仍然是错误的:

php app/console doctrine:schema:update --force
PHP Warning:  DOMElement::setAttribute() expects parameter 2 to be string, array given in /home/miejsce/public_html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php on line 117
PHP Warning:  strpos() expects parameter 1 to be string, array given in /home/miejsce/public_html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php on line 508
PHP Notice:  Array to string conversion in /home/miejsce/public_html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php on line 508
PHP Notice:  Array to string conversion in /home/miejsce/public_html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php on line 508
Nothing to update - your database is already in sync with the current entity metadata.

当我运行时,我会成功:

php app/console acme:oauth-server:client:create --redirect-uri="http://clinet.local/" --grant-type="authorization_code" --grant-type="password" --grant-type="refresh_token" --grant-type="token" --grant-type="client_credentials"
Added a new client with public id 3_4gn1mzg8lnackso0s8c0o0gk004sgkog4000o4gg8ss4s40g4, secret 6bq5vs50kuossgs08ccsgskwc0ow4ssosw8k084cgk0w0wo8cg

但在页面上

FatalErrorException:编译错误:无法在/home/miejsce/public_html/src/Acme/DemoBundle/Controller/SecurityController.php第0行中重新声明类Acme \\ DemoBundle \\ SecurityController

您正在尝试从YML配置文件导入XML服务文件。 YML阅读器遵循导入并尝试解析XML,这会导致错误。

为什么需要导入? 如果确实需要,可能您无法尝试在YML中重写XML服务配置

请使用此博客文章的参考实现来解决此类问题。

您感兴趣的文件在这里: https : //github.com/iamtankist/oauth-server/blob/master/src/StarkIndustries/IronWallBundle/Resources/config/services.xml

一起参考实施: https : //github.com/iamtankist/oauth-server

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM