【发布时间】:2018-04-17 04:44:24
【问题描述】:
我有一个 Zend Framework 1 (ZF1) 应用程序在 PHP 7.1.9-1 的 Docker 容器中运行。现在我已经更新了这样的容器,PHP 版本已更改为 7.1.11-1。出于某种原因,不知道我的应用程序已停止工作(我得到一个空白页),我能看到的唯一错误是:
[Sat Nov 04 16:05:45.500626 2017] [php7:notice] [pid 61] [client 172.18.0.1:49356] PHP Warning: session_write_close(): Failed to write session data using user defined save handler. (session.save_path: /var/lib/php/sessions) in /var/www/html/vendor/zendframework/zendframework1/library/Zend/Session.php on line 732
[Sat Nov 04 16:05:45.500637 2017] [php7:notice] [pid 61] [client 172.18.0.1:49356] PHP Stack trace:
[Sat Nov 04 16:05:45.500653 2017] [php7:notice] [pid 61] [client 172.18.0.1:49356] PHP 1. Zend_Session_SaveHandler_DbTable->__destruct() /var/www/html/vendor/zendframework/zendframework1/library/Zend/Session/SaveHandler/DbTable.php:0
[Sat Nov 04 16:05:45.500658 2017] [php7:notice] [pid 61] [client 172.18.0.1:49356] PHP 2. Zend_Session::writeClose($readonly = *uninitialized*) /var/www/html/vendor/zendframework/zendframework1/library/Zend/Session/SaveHandler/DbTable.php:217
[Sat Nov 04 16:05:45.500661 2017] [php7:notice] [pid 61] [client 172.18.0.1:49356] PHP 3. session_write_close() /var/www/html/vendor/zendframework/zendframework1/library/Zend/Session.php:732
我知道有很多关于此的信息,但我尝试过的任何东西都没有为我工作。其中一些是:
- error in zend session database for php7
- https://github.com/zendframework/zf1/issues/665#issue-127528467
- PHP7 + Symfony 2.8, Failed to write session data
这是在bootstrap.php 文件中设置会话保存处理程序的方式,如文档中的here 所述:
$config = [
'name' => 'session',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime',
];
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
Zend_Session::start();
我也知道 ZF1 最近达到了 EOL 并且没有支持,但现在我可以在我的应用程序中摆脱 ZF1,我不想回到 PHP5。
我的猜测是 7.1.9 和 7.1.10 之间发生了一些变化,但我对此一无所知。
关于这里可能出现什么问题的任何想法?
【问题讨论】:
-
这就是这个错误的所有error_log吗?看来您正在使用 db 处理程序进行会话,并且无法写入表。如果这是真的,您可以检查此链接并确认您的表是应该的吗? zendframework.github.io/zend-session/save-handler/…
-
@MehmetSÖĞÜNMEZ 这是 ZF1 我认为你给我的文档是其他版本而不是 1 :(
-
是的,你是对的:/ 但原因是会话保存处理程序。你的设置是什么?它是文件还是数据库处理程序?你能分享会话设置吗?
-
@MehmetSÖĞÜNMEZ 抱歉耽搁了。看看我最近的编辑,这是你要求的吗?
-
如果您使用的是多列数据库,文档中还有其他配置。您正在研究的是第一个示例还是第二个示例?
标签: php session zend-framework php-7 php-7.1