Вход в токен 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: user@web.com
Кстати, я никогда раньше не использовал 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
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