【发布时间】:2020-02-13 03:21:44
【问题描述】:
我最近刚刚接手了一个项目,我们正试图使用 php:7.4-fpm-buster 将其放置在 docker 中。之前使用的是旧版本的 PHP,因此在项目中大量使用了 $_SESSION 变量。这是我的 PHP 文件中失败的代码:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
...和...
unset($_SESSION['ListOfRoutings']);
我还回显了 sys_get_temp_dir(),它说它是 /tmp,它还说它正在写入的文件夹是可写的。我得到的错误:
注意:未定义的变量:_SESSION in /usr/local/src/arc-bis/basketdesign/scripts/ListOfRoutings.php 上 第 96 行
第 96 行是未设置的调用。我还取出了 if 语句,它不会创建会话。有没有办法让 $_SESSION 使用 docker 创建一个只有 tmp 目录的变量?我试图在 docker 中创建一个 tmp 目录,但是没有用。 提前谢谢...
编辑:这是来自 phpinfo 的信息:
启用会话支持 已注册的保存处理程序文件用户已注册 序列化程序处理程序 php_serialize php php_binary 本地指令 ValueMaster 值 session.auto_startOffOff session.cache_expire180180 session.cache_limiternocachenocache session.cookie_domainno 值没有值 session.cookie_httponly没有 valueno value session.cookie_lifetime00 session.cookie_path// session.cookie_samesiteno 值无值 session.cookie_secure00 session.gc_divisor10001000 session.gc_maxlifetime72007200 session.gc_probability11 session.lazy_writeOnOn session.namePHPSESSIDPHPSESSID session.referer_checkno 值没有值 session.save_handler没有 值无值 session.save_path/tmp/tmp session.serialize_handlerphpphp session.sid_bits_per_character44 session.sid_length3232 session.upload_progress.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
编辑:以下是我尝试添加到 docker 的一些内容。项目的 ./ 根目录下有一个 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
在我的 docker 文件夹中的 php.ini 文件上:
session.save_path = /usr/local/src/arc-bis
【问题讨论】:
-
是的,我找到了我的特殊情况所需的东西。
-
“之前使用的是旧版本的PHP,所以项目中大量使用了$_SESSION变量。” PHP的版本与会话变量的使用无关.
-
你确定
tmp/在 Docker 容器中是可写的吗?你是如何测试的? -
Jay,我现在正在尝试将 tmp/ 文件夹添加到我的项目中,希望就是这样。我是一个新手,了解如何根据我使用的操作系统构建 docker 内的文件结构。
-
我在我的根目录上创建了一个 tmp 文件夹,它现在具有以下权限:drwxr-xr-x。程序没有变化。