【问题标题】:symfony OAuth2 Validation failed: no DTD foundsymfony OAuth2 验证失败:未找到 DTD
【发布时间】:2014-03-13 15:17:42
【问题描述】:

我用这个教程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 文件是从手册中复制和粘贴的,这里是源代码

<!-- 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

哪里有错误?

更新1

我现在将配置重新写入 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"

sory 仍然是错误:

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

【问题讨论】:

    标签: php symfony oauth


    【解决方案1】:

    您正在尝试从 YML 配置文件导入 XML 服务文件。 YML 阅读器遵循导入并尝试解析给出错误的 XML。

    为什么需要进行导入?如果真的需要,也许你不能尝试用 YML 重写 XML 服务配置

    【讨论】:

    • 将类传递给服务时,不要将其括在 % 中。此外,您将类名作为参数而不是服务传递。
    • 我现在重写可以吗?
    • 您的新错误似乎与服务配置无关。我认为你应该检查你的控制器命名空间。也许您应该尝试将您的 SecuritController 重命名为不同的名称,看看重新声明错误是否得到修复
    【解决方案2】:

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

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

    全部参考实现:https://github.com/iamtankist/oauth-server

    【讨论】:

    • 你使用 xml 所以是不同的 - 你知道为什么我仍然有错误吗?
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2021-05-22
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多