Symfony вызывает сборщик мусора PHP на Ubuntu 14.04, даже если session.gc_probability установлен в 0
В качестве состояния заголовка по какой-то причине приложение Symfony 2.5 вызывает сборщик мусора php, даже если у всех моих файлов php.ini есть:
session.gc_probability = 0
Кто-нибудь знает, как предотвратить это?
Сообщение об ошибке im получение:
Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/lib/php5)
failed: Permission denied (13) in /<path-to-my-site>/var/cache/dev/classes.php line 432
FROM PHPINFO():
Directive Local Value Master Value
session.gc_divisor 1000 1000
session.gc_maxlifetime 86400 86400
session.gc_probability 0 0
Я знаю, что я могу просто предоставить разрешение на использование www-data в папку /var/lib/php5
или изменить session.save_path
на то, к которому пользователь www-data
имеет доступ уже, но я хочу знать, почему этот процесс равен вызов, когда он должен быть отключен.
Ответы
Ответ 1
Я нашел его, я думаю, последняя версия symfony перезаписывает это по умолчанию при использовании app_dev.php
. В Symfony FrameworkBundle устанавливается session.gc_probability = 1
.
Как по Symfony 3
Однако некоторые операционные системы выполняют свою собственную обработку сеанса и устанавливают переменную session.gc_probability в 0, чтобы остановить сборку мусора PHP. Вот почему Symfony теперь перезаписывает это значение до 1.
Если вы хотите использовать исходное значение, установленное в вашем php.ini, добавьте следующую конфигурацию:
# config.yml
framework:
session:
gc_probability: null
https://symfony.com/doc/current/components/http_foundation/session_configuration.html#configuring-garbage-collection
Предыдущие версии 2.x
Чтобы изменить это, добавьте следующее к вашему config.yml
framework:
session:
gc_probability: 0
Затем очистите кэширование
php app/console cache:clear
Здесь отображается gc_probability
по умолчанию 1
. Почему они просто не читают из настроек php.ini, не уверен.
http://symfony.com/doc/2.5/reference/configuration/framework.html#gc-probability
Ответ 2
Вы можете установить путь для сеансов вручную. См. Symfony doc в каталоге сеансов.
# app/config/config.yml
framework:
session:
handler_id: session.handler.native_file
save_path: '%kernel.root_dir%/sessions'