Подтвердить что ты не робот

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 имеет доступ уже, но я хочу знать, почему этот процесс равен вызов, когда он должен быть отключен.

4b9b3361

Ответ 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'