Вход в систему с токеном sfGuard не работает в Symfony 1

У меня проблемы с получением входа в систему по токену sfGuard с приложением Symfony. Доступ к приложению Symfony осуществляется через плагин WordPress. Плагин WordPress — это голые кости, которые встраивают iframe со строкой токена в панель управления WP:

<iframe src="/app/index.php/api/authenticate/**token**" width="100%" height="100%">

Это отлично работает на живом сервере. Покопавшись в журналах ошибок, я нашел это:

PDO Connection Error: SQLSTATE[28000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES), referer: http://****/wp-admin/admin.php?page=custom-sms.php 
PHP Fatal error: Call to a member function prepare() on a non-object in /var/www/vhosts/domain.com/sfapp/lib/vendor/symfony/lib/storage/sfPDOSessionStorage.class.php on line 162, referer: http://****/wp-admin/admin.php?page=custom-sms.php

Странно то, что я могу писать/подключаться к базе данных на интерфейсе сайта. Что может быть причиной того, что приложение не использует имя пользователя и пароль базы данных, установленные в файле конфигурации database.yml?

Файл app.yml:

all:
  security:
    #to auto-login to the SMS alert system from inside Wordpress admin
    token: **token**
    username: [email protected]

Кстати, я никогда раньше не пользовался Symfony и унаследовал этот сайт без документации.

Обновлять

database.yml файл:

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/07-Databases

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=localhost;dbname=db_name
      username: **username**
      password: **password**

2-е обновление:

Чтобы добавить, я вручную установил переменную $env в prod для тестирования /web/index.php на новом сервере.

factories.yml файл:

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/05-Factories

prod:
  logger:
    class: sfAggregateLogger
    param:
      level: err
      loggers:
        sf_file_debug:
          class: sfFileLogger
          param:
            level: err
            file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log

staging:
  logger:
    class: sfAggregateLogger
    param:
      level: notice
      loggers:
        sf_file_debug:
          class: sfFileLogger
          param:
            level: notice
            file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log

test:
  storage:
    class: sfSessionTestStorage
    param:
      session_path: %SF_TEST_CACHE_DIR%/sessions

  response:
    class: sfWebResponse
    param:
      send_http_headers: false

  mailer:
    param:
      delivery_strategy: none

all:
  routing:
    class: sfPatternRouting
    param:
      generate_shortest_url:            true
      extra_parameters_as_query_string: true

  view_cache_manager:
    class: sfViewCacheManager
    param:
      cache_key_use_vary_headers: true
      cache_key_use_host_name:    true

person Siebird    schedule 30.03.2013    source источник
comment
Покажите нам файл config/databases.yml.   -  person j0k    schedule 31.03.2013
comment
Только что обновлено! Спасибо за помощь   -  person Siebird    schedule 31.03.2013
comment
а что у тебя внутри apps/[yourapp]/config/factories.yml?   -  person j0k    schedule 31.03.2013
comment
Я не вижу смысла использовать sfPDOSessionStorage для управления вашим сеансом. Кажется, ваша ошибка исходит из этого класса, который обычно определяется внутри factory.yml. У вас есть другое приложение для этого экземпляра Symfony? Нравится серверная часть или вазервер, который может использовать sfPDOSessionStorage в качестве хранилища сеансов? Поиск по вашему проекту.   -  person j0k    schedule 01.04.2013


Ответы (1)


Получил это работает. Все заслуги принадлежат @j0k за указатели.

Во время настройки на новом сервере я столкнулся с некоторыми ошибками в хранилище сеансов, поэтому я изменил тип класса хранилища на [app]/config/factories.yml на sfNoStorage. Возврат к sfPDOSessionStorage позволяет использовать токен для входа в систему.

all:
  storage:
    #http://www.designdisclosure.com/2009/11/symfony-doctrine-database-session-storage/
    class: sfPDOSessionStorage
    param:
      session_name: ugro
      database: doctrine
      db_table: session
      db_id_col: sess_id
      db_data_col: sess_data
      db_time_col: sess_time
person Siebird    schedule 01.04.2013