【发布时间】: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