为了账号安全,请及时绑定邮箱和手机立即绑定

session_start() 导致错误:没有这样的文件或目录

session_start() 导致错误:没有这样的文件或目录

PHP
元芳怎么了 2021-12-03 14:32:01
我有以下 PHP 代码:include './globallyUsedFunctions/connectToDatabase.php';include './globallyUsedFunctions/hashInput.php';session_start();出于某种原因,它会导致此错误:<br /><b>Warning</b>:  session_start(): open(\xampp\tmp\sess_4p70knkr6lb7r9ha0pitktl3fe, O_RDWR) failed: No such file or directory (2) in <b>D:\foundationtests\src\assets\php\login.php</b> on line <b>2</b><br /><br /><b>Warning</b>:  session_start(): Failed to read session data: files (path: \xampp\tmp) in <b>D:\foundationtests\src\assets\php\login.php</b> on line <b>2</b><br />现在我认为原因在于代码之外,所以这里有一些关于我的系统的信息:我有最新版本的免安装 XAMPP,我在其中运行 apache 和 mariaDB。这是在 Windows 10 机器上运行的,在没有管理员权限的用户帐户上运行(这就是我选择 XAMPP 免安装版本的原因)。该网站也在基于 webpack4、gulp 和 babel7 的 ZURB 基础框架(ZURB 模板 6.4)中运行。编辑:我已经尝试过的替代方案:由“代码构建者”建议(见答案)session_start();require_once $_SERVER['DOCUMENT_ROOT'].'/globallyUsedFunctions/connectToDatabase.php';require_once $_SERVER['DOCUMENT_ROOT'].'/globallyUsedFunctions/hashInput.php';结果 =><br /><b>Warning</b>:  session_start(): open(\xampp\tmp\sess_14rr40ahtg7rbgb20fvqocet83, O_RDWR) failed: No such file or directory (2) in <b>D:\foundationtests\src\assets\php\login.php</b> on line <b>2</b><br /><br /><b>Warning</b>:  session_start(): Failed to read session data: files (path: \xampp\tmp) in <b>D:\foundationtests\src\assets\php\login.php</b> on line <b>2</b><br />
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

<b>Warning</b>:  session_start(): open(\xampp\tmp\sess_4p70knkr6lb7r9ha0pitktl3fe, O_RDWR) failed: No such file or directory (2) in <b>D:\foundationtests\src\assets\php\login.php</b> on line <b>2</b><br />

session_start()尝试将其数据写入的路径没有驱动器号。由于您正在从 运行代码D:\foundationtests\src\assets\php\login.php,因此假定它D:也在 。你说实际路径应该在E:. 问题就在这里。

我不熟悉第三方包(有时它们引起的问题似乎比解决的问题还多)但它肯定会在php.ini某个地方有一个包含不完整session.save_path指令的文件。找到它并修复它。

除此之外,更好的长期解决方案是为每个应用程序启用自定义会话目录。机制大致相同:

  1. D:\foundationtests\src在 DOCUMENT_ROOT 之外的代码库中创建一个目录(我猜是在某个地方)。

  2. session.save_path调用前配置session_start()

这具有提供对会话超时的完全控制的额外好处。


查看完整回答
反对 回复 2021-12-03
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

session_start(); 应该始终是项目中的第一行代码。

使用相对路径会给你带来麻烦。尝试使用 $_SERVER['DOCUMENT_ROOT'] 的绝对路径,然后指定文件的位置。

require_once $_SERVER['DOCUMENT_ROOT']."/connectToDatabase.php";


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 420 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号