Docker проект с использованием переменной $ _SESSION не создан - PullRequest
0 голосов
/ 12 февраля 2020

Я недавно принял проект, который мы пытаемся разместить в docker, используя php: 7.4-fpm-buster. Ранее использовалась старая версия PHP, поэтому переменные $ _SESSION активно использовались в проекте. Вот код, который у меня есть в моем PHP файле, который терпит неудачу:

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

... и ...

unset($_SESSION['ListOfRoutings']);

Я также повторил sys_get_temp_dir () и это говорит, что это / tmp, он также говорит, что папка, в которую он пишет, доступна для записи. Я получаю сообщение об ошибке:

Примечание: неопределенная переменная: _SESSION в /usr/local/src/arc-bis/basketdesign/scripts/ListOfRoutings.php в строке 96

Линия 96 - это неустановленный вызов. Я также вынул оператор if, он не создает сеанс. Есть ли способ получить $ _SESSION для создания переменной только с каталогом tmp, используя docker? Я пытался создать каталог tmp в docker, но это не сработало. Заранее спасибо ...

РЕДАКТИРОВАТЬ: Вот информация из phpinfo:

Поддержка сеанса включена Зарегистрированный пользователь обработчиков сохранения файлов Зарегистрированный обработчик сериализатора php_serialize php php_binary DirectiveLocal ValueMaster Value session .auto_startOffOff session.cache_expire180180 сеанс .cookie_path // session.cookie_samesite без значения без значения session.cookie_secure00 session.gc_divisor10001000 session.gc_maxlifetime72007200 session.gc_probability11 session.lazy_writeOnOn сеанс 1031 * без значения session.save_handler без значения без значения session.save_path / tmp / tmp session.serialize_handler phpphp session.sid_bits_per_character44 сеанс. sid_length3232 session.upload_pro gress.cleanupOnOn session.upload_progress.enabledOnOn session.upload_progress.freq1% 1% session.upload_progress.min_freq11 session.upload_progress.namePHP_SESSION_UPLOAD_PROGRESSPHP_SESSION_UPLOAD_PROGRESS session.upload_progress.prefixupload_progress_upload_progress_ session.use_cookies11 session.use_only_cookies11 session.use_strict_mode00 session.use_trans_sid00

1039

РЕДАКТИРОВАТЬ: Вот некоторые вещи, которые я пытался добавить к docker. Внутри ./ root проекта есть папка tmp.

FROM php:7.4-fpm-buster
...
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini.template
COPY ./docker/php/php-fpm.conf /usr/local/etc/php-fpm.conf.template
...
RUN mkdir /usr/local/src/arc-bis
COPY ./* /usr/local/src/arc-bis/
RUN chown -R www-data:www-data /usr/local/src/arc-bis/
...
WORKDIR /usr/local/src/arc-bis

В php .ini файле внутри моей папки docker:

session.save_path = /usr/local/src/arc-bis

1 Ответ

2 голосов
/ 12 февраля 2020

Я думаю, вам следует проверить, возвращает ли session_status () PHP_SESSION_DISABLED

Когда вы смотрите журнал изменений из session_start, вы обнаружите:

7.1.0 session_start () теперь возвращает FALSE и больше не инициализирует $ _SESSION, когда не удалось запустить сеанс.

Так что, возможно, вам также следует проверить возвращаемое значение из session_start ()

Вы также можете вызвать php_info () и проверьте абзац сеанса, возможно, сеансы отключены на вашем docker изображении. Может быть, вам нужно предоставить вашему docker образу правильную конфигурацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...