【发布时间】:2014-10-27 08:31:32
【问题描述】:
我能够在 3 天前创建会话。代码保持不变。但现在我无法创建会话。错误信息:Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (c:\web\dev\session) in Unknown on line 0。
如果我将路径 c:\web\dev\session 复制到 Windows 运行命令中,它会打开路径,因此我已验证该路径存在。我也收到错误:Warning: session_start(): The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\Web\dev\backdoor\request.php on line 10 但我没有指定 PHP ID。
我的代码如下所示:
$user_row 是一个数组,其中包含会话的所有用户数据。
session_save_path('c:\web\dev\session');
session_start();
$_SESSION['user'] = $user_row;
$_SESSION['security']['ip'] = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$_SESSION['forwarded_for'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$_SESSION['security']['forwarded_for'] = false;
}
我使用的是 Apache 2.4 和 PHP 5.6
我见过this link,但它似乎只有在您使用 IIS 时才能解决问题。我似乎找不到 Apache 的解决方案。
我还尝试从我的根目录中删除 .htaccess 文件。
【问题讨论】:
-
您使用哪个 Windows 版本?使 shure php 可以写入目录 .. 也许一个技巧可能是将 webroot 设置不在 c: root-dir
-
一般情况下不需要指定
session_save_path()。确保 Apache 服务用户有权写入该文件夹。 -
您是否尝试过清除浏览器缓存和活动会话?此外,检查 Apache 是否有权写入该文件夹。此外,
session_save_path()听起来有点矫枉过正。 -
我使用的是 Windows 7 Ultimate。我曾经能够在星期五创建会话。而今天早上它只是无缘无故地失败了。我的操作系统或 PHP 没有任何改变。为了开发,我允许计算机和网络上的每个用户和组完全访问我的 web 文件夹,以确保我的代码完全兼容