【问题标题】:Windows 2019 and PHP 7.3: "session_start(): ps_files_cleanup_dir: opendir failed: No such file or directory (2)"Windows 2019 和 PHP 7.3:“session_start(): ps_files_cleanup_dir: opendir failed: No such file or directory (2)”
【发布时间】:2020-05-26 06:03:53
【问题描述】:

有这个问题。我知道有类似的问题,但没有一个提供解决方案。

  • Windows Server 2019 服务器核心
  • IIS 下的 PHP 7.3.7 x64。

错误信息:

PHP 致命错误:未捕获的 ErrorException: session_start(): ps_files_cleanup_dir: opendir(D:\TempPHP) 失败:没有这样的文件或 目录 (2)。

  • 该目录确实存在,并且其中包含会话文件。
  • 应用程序池用户(IIS AppPool...)、IUSR、IIS_IUSRS、本地服务、本地网络、系统和创建所有者。
  • 错误消息似乎随机显示。

一些相关的php.ini设置:

session.gc_probability = 1
error_log = "D:\TempPHP\PHP73x64_errors.log"
upload_tmp_dir = "D:\TempPHP\upload"
session.save_path = "D:\TempPHP"
sys_temp_dir = "D:\TempPHP"

编辑:“D:\”是一个本地分区。不是映射或共享驱动器。正在成功写入日志和会话。似乎 php 无法删除这些文件。

【问题讨论】:

  • D:\是什么类型的盘?映射驱动器?
  • 确保 iis 应用程序池正在使用应用程序池标识并分配 session_start()。分配 iis_iusr 和 iis_iusrs 完全控制权限。并且该文件夹未映射或共享驱动器。
  • @LexLi 它是一个本地驱动器。与 C:\ 相同的磁盘,只是另一个分区。
  • @JalpaPanchal 在“身份”选项上配置为“ApplicationPoolIdentity”。该文件夹未映射,也未共享。没有可用的 iis_iusr 用户。你的意思是 iusr 吗? iusr 和 iis_iusrs 已经拥有完全控制权限。
  • 您能否解释一下“日志和会话正在成功写入。似乎 php 无法删除这些文件。”是什么意思?

标签: php windows iis permissions fastcgi


【解决方案1】:

好的,找到问题了。

似乎在 Windows 中 session.save_path 不能位于与 PHP 可执行路径不同的磁盘/分区中。在我的例子中,PHP 目录是 c:\Program Files\PHP\v7.3,所以我将 TempPHP 文件夹从 D: 移动到 C: 分区,并将 session.save_path 的值从“D:\TempPHP”更改为“C: \TempPHP”。现在 sess_xxxxx 文件被自动清理,没有更多错误信息了。

不知道这是否适用于其他 php 或 windows 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 2014-09-04
    • 2012-05-30
    • 2018-09-09
    • 2019-10-25
    • 2021-11-16
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多