PHP总是创建一个新会话

时间:2016-10-07 07:11:32

标签: php apache session angular

我目前正在使用Angular 2和PHP REST API后端的网站上工作。一旦我开始使用会话数据,我发现它在网站发出每个请求后都会创建一个新的单独会话文件,这在使用POSTMAN调用我的API时不会发生。

以下是我的 index.php

<?php
session_start();

error_reporting(E_ALL); ini_set('display_errors', true);
if (!is_writable(session_save_path()) ) {
   echo 'Session save path "'.session_save_path().'" is not writable!'; 
}
require '../vendor/autoload.php';

$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);


// Register dependencies
require __DIR__ . '/../src/dependencies.php';

// Register routes
require __DIR__ . '/../src/routes/routes.php';

$app->run();
exit();
?>

例如,在登录6次后,我在xampp/tmp文件夹中收到了类似的内容:

sess_9tehhc94n54ra6rpq2j55b0b70
sess_84u3blees7ue2la3nckn97f4h5
sess_au79phq7k1umjbeambia4smjf4
sess_bm5658c44n0d0s452tm9g7mij6
sess_eac14a6sths5ars0eltc3g13e4
sess_m3mk9ms4f2j12jqh4hvh8gsch1

但是,如果我使用POSTMAN调用我的REST API,它将按预期创建和使用一个会话文件。

其他信息

我在Apache上使用hosts文件设置了两个虚拟主机,如下所示:

127.0.0.1    api.stuff.dev
127.0.0.1    application.stuff.dev

PHP版 7.0.8

PHP.ini (仅与会话相关)

session.save_handler=files
session.save_path="C:\xampp\tmp"
session.use_strict_mode=0
session.use_cookies=1
session.use_only_cookies=1
session.name=PHPSESSID
session.auto_start=0
session.cookie_path=/
session.cookie_domain=
session.cookie_httponly=
session.serialize_handler=php
session.gc_probability=1
session.gc_divisor=1000
session.gc_maxlifetime=1440
session.referer_check=
session.entropy_length=0
session.cache_limiter=nocache
session.cache_expire=180
session.use_trans_sid=0
session.hash_function=0
session.hash_bits_per_character=5

的httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@localhost.com
    DocumentRoot "E:\applications\stuff"
    ServerName  application.stuff.dev
    ServerAlias  application.stuff.dev
    <Directory "E:\applications\stuff">
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin admin@localhost.com
    DocumentRoot "E:\applications\API REST"
    ServerName api.stuff.dev
    ServerAlias api.stuff.dev
    <Directory "E:\applications\API REST">
        AllowOverride All
        Require all granted
        Header always set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
        Header always set Access-Control-Max-Age "1000"
        Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
    </Directory>
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

检查您的浏览器是否接受cookie。

PHP使用cookie存储您的会话ID。