我在 phpmyadmin + redis php 会话缓存上遇到了奇怪的行为。这是我的 php-fpm 池配置:
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
此配置对于简单的 php 脚本来说工作正常:
<?php
//simple counter to test sessions. should increment on each page reload.
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;
echo "<br>";
$_SESSION['count'] = ++$count;
$username = $_SESSION['username'];
if(isset($_SESSION['logged']) && $_SESSION['logged']=='yes') {
echo "$username";
}
$_SESSION['username']='Teddy';
$_SESSION['logged']='yes';
?>
我看到了增量和泰迪消息。
但是当我尝试通过'访问 phpmyadminhttp://我的服务器/phpmyadmin“我总是得到身份验证页面,即使成功登录后,我总是被重定向到该登录页面......
如果我切换到路径会话:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/www/vhost/sessions
一切运行良好(我的 php 脚本和 phpmyadmin)。
我想知道是否有人遇到过类似的问题,以及是否有解决方法?这可能是 phpmyadmin 的限制吗?
我在 Linux Debian 8.6 + phpmyadmin 4.2.12-2 + php5-fpm 5.6.24 + redis-server 3.2.4-1 上运行。
我的虚拟主机配置如下:
Alias /webops /usr/share/phpmyadmin
...
<FilesMatch "(^$|\.php$)">
SetHandler "proxy:unix:///var/run/php-fpm/vhost.sock|fcgi://vhost/"
</FilesMatch>
<Proxy fcgi://vhost/$1 >
</Proxy>
RewriteCond %{REQUEST_FILENAME} .php$
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
RewriteRule (.*) - [H=text/html]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
谢谢大家,朱利安