symfony — при повторном развертывании приложения на героку PHP сессии исчезают

У меня есть приложение Symfony на Heroku, которое использует сессии (например, чтобы держать пользователя в системе).

Я настроил memcachier (вывод heroku addons команды):

Add-on                             Plan  Price
─────────────────────────────────  ────  ─────
memcachier (memcachier-flat-XXXX)  dev   free

Я также создал файл .user.ini в корне моего проекта со следующим содержанием:

session.save_handler=memcached
memcached.sess_binary=1
session.save_path="PERSISTENT=myapp_session ${MEMCACHIER_SERVERS}"memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}

Также я добавил в composer.json это требование для ext-memcached:

  "require": {
"php": ">=5.3.9",
"ext-memcached" : "*",
"symfony/symfony": "2.7.*",

Поэтому, когда я вхожу в экземпляр через heroku run bash и проверьте, установлен ли модуль memcahed — все выглядит нормально (также phpinfo () выполняется через nginx, а php5-fpm возвращает те же значения конфигурации)

~ $ php -i | grep memcache
/app/.heroku/php/etc/php/conf.d/110-ext-memcached.ini
memcached
memcached support => enabled
libmemcached version => 1.0.18
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.serializer => php => php
memcached.sess_binary => 0 => 0
memcached.sess_connect_timeout => 1000 => 1000
memcached.sess_consistent_hash => 0 => 0
memcached.sess_lock_expire => 0 => 0
memcached.sess_lock_max_wait => 0 => 0
memcached.sess_lock_wait => 150000 => 150000
memcached.sess_locking => 1 => 1
memcached.sess_number_of_replicas => 0 => 0
memcached.sess_prefix => memc.sess.key. => memc.sess.key.
memcached.sess_randomize_replica_read => 0 => 0
memcached.sess_remove_failed => 0 => 0
memcached.sess_sasl_password => no value => no value
memcached.sess_sasl_username => no value => no value
memcached.store_retry_count => 2 => 2
memcached.use_sasl => 1 => 1
Registered save handlers => files user memcached

Однако при проверке экземпляра через heroku run bash и работает php -i | grep session ты это видишь session.save_handler все еще files несмотря на настройку в .user.ini session.save_handler = memcached

session
session.auto_start => Off => Off
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => Off => Off
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_secure => Off => Off
session.entropy_file => /dev/urandom => /dev/urandom
session.entropy_length => 0 => 0
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 1 => 1
session.hash_bits_per_character => 5 => 5
session.hash_function => 0 => 0
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no valuesession.save_handler => files => files
^^^^^^^^^^^^^^    WTF ???session.save_path => no value => no value
session.serialize_handler => php => php
session.upload_progress.cleanup => On => On
session.upload_progress.enabled => On => On
session.upload_progress.freq => 1% => 1%
session.upload_progress.min_freq => 1 => 1
session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix => upload_progress_ => upload_progress_
session.use_cookies => On => On
session.use_only_cookies => On => On
session.use_strict_mode => Off => Off
session.use_trans_sid => 0 => 0

Так что мне интересно, почему нет .user.ini Конфигурация не вступает в силу с реальным php.ini конфигурация?

1

Решение

Это распространенное заблуждение. heroku run bash раскручивает отдельный экземпляр вашего проекта. Условно «.user.ini» применяется, когда вы выполняете реальный вызов http или https для проекта из-за пути, который сервер (nginx в вашем случае) ведет к файлу, к которому он пытается получить доступ (web.php). По сути, «.user.ini» не применяется ни в глобальном масштабе, ни когда-либо.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]