Предупреждение symfony2: база данных sqlite3 profiler только для чтения - PullRequest
4 голосов
/ 31 марта 2012

Я получаю странное предупреждение, которое не могу исправить с помощью Symfony2 версии v2.0.12.Это работало нормально вчера.Единственное существенное недавнее изменение, которое я подозреваю, это мое недавнее обновление самого symfony2 (установленного в vendors/symfony) с версии 2.0.5 до версии 2.0.12.

Warning: SQLite3Stmt::execute(): Unable to execute statement: attempt to write a readonly database in /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php on line 66

Call Stack:
    0.0000     329108   1. {main}() /Symfony2/web/app_dev.php:0
    0.0015     720736   2. Symfony\Component\HttpKernel\Kernel->handle() /Symfony2/web/app_dev.php:10
    0.0102    1461700   3. Symfony\Bundle\FrameworkBundle\HttpKernel->handle() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/Kernel.php:171
    0.0102    1462608   4. Symfony\Component\HttpKernel\HttpKernel->handle() /Symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/HttpKernel.php:47
    0.0102    1462608   5. Symfony\Component\HttpKernel\HttpKernel->handleRaw() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:71
    0.0594    4226612   6. Symfony\Component\HttpKernel\HttpKernel->filterResponse() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:139
    0.0595    4232664   7. Symfony\Bundle\FrameworkBundle\ContainerAwareEventDispatcher->dispatch() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:157
    0.0598    4245456   8. Symfony\Component\EventDispatcher\EventDispatcher->dispatch() /Symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/ContainerAwareEventDispatcher.php:145
    0.0599    4246116   9. Symfony\Bundle\FrameworkBundle\Debug\TraceableEventDispatcher->doDispatch() /Symfony2/vendor/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:49
    0.0609    4265376  10. call_user_func() /Symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventDispatcher.php:82
    0.0609    4265404  11. Symfony\Component\HttpKernel\EventListener\ProfilerListener->onKernelResponse() /Symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventDispatcher.php:0
    0.0640    4470124  12. Symfony\Component\HttpKernel\Profiler\Profiler->saveProfile() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php:124
    0.0640    4470124  13. Symfony\Component\HttpKernel\Profiler\PdoProfilerStorage->write() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/Profiler/Profiler.php:91
    0.0650    4516660  14. Symfony\Component\HttpKernel\Profiler\SqliteProfilerStorage->exec() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php:103
    0.0651    4563392  15. SQLite3Stmt->execute() /Symfony2/vendor/symfony/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php:66

В app/logs/test.log я вижу строки типа

[2012-03-30 14:40:49] profiler.WARNING: Unable to store the profiler information. [] []

Есть идеи?

Я прошел через SqliteProfilerStorage в отладчике и узнал, что рассматриваемая база данных Sqlite3 находится на app/cache/dev/profiler.db.

$ ls -l app/cache/dev/profiler.db
-rw-r--r--+ 1 adam www-data  51200 2012-03-30 13:56 app/cache/dev/profiler.db

$ getfacl app/cache/test/profiler.db
# file: app/cache/test/profiler.db
# owner: www-data
# group: www-data
user::rw-
user:www-data:rwx       #effective:r--
user:adam:rwx           #effective:r--
group::rwx          #effective:r--
mask::r--
other::r--

Я регулярно запускаю тесты phpunitиз командной строки, а также ударил Apache2 VirtualHost, указывающий на то же приложение Symfony2.Я думал, что списки ACL позволят этим двум быть взаимозаменяемыми, но меня немного смущает effective:r-- в списках ACL выше.

Я установил разрешения в соответствии с установочным документом .Я сделал это:

$ mkdir app/{cache,logs}
$ chmod 775 app/{cache,logs}
$ sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

И снова, это только начало вызывать проблемы, поэтому я подозреваю, что обновление Symfony2.Хотя я просматриваю коммиты и пока не нашел ничего, что могло бы недавно это сломать.

  • umask как для моего пользователя (adam), так и для www-data возвратов0002.
  • Я использую Ubuntu 11.10.
  • В этой теме описан похожий симптом , но предлагаемое разрешение не работает для меня.profiler.db всегда имеет разрешения 0644.

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012

возможно, это только потому, что вы забыли рекурсивно установить права доступа 775 для файлов.

Попробуйте с

chmod 775 -R app/{cache,logs}
0 голосов
/ 17 февраля 2014

Вы проверяли разрешения родительских каталогов?

Я решил похожую проблему с этим:

chgrp www-data app app/symfony.db
chmod 775 app
chmod 664 app/symfony.db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...