标题中的"IIS PHP环境Temp文件夹的权限问题引起的网站故障"指的是在运行IIS服务器上的PHP应用程序时,由于Temp文件夹的权限配置不正确,导致的网站运行缓慢或出现故障。Temp文件夹在Windows操作系统中通常用于存储临时文件,包括PHP在运行过程中产生的session文件和其他临时数据。
描述中提到的情况,服务器性能下降,重启后无法连接,以及最终发现Temp文件夹下存在大量sess_开头的文件,这表明问题可能与PHP session处理有关。当PHP处理大量并发请求时,如果无法正常清理session文件,这些文件会堆积在Temp文件夹中,占用大量资源,从而导致系统响应变慢。
标签中的"Temp文件夹"和"权限"是问题的关键。Temp文件夹中的文件数量过多,且由于权限设置不当,IIS用户(IIS_USERS组)没有足够的权限去删除这些文件,这可能是由于PHP的session garbage collection(垃圾回收)机制未能有效执行。
在排查过程中,首先检查了服务器的常规问题,如病毒、木马、数据库服务器状态、.NET网站和PHP网站的性能,排除了这些问题。接着,注意到PHP日志文件异常大,禁用PHP错误日志后,性能有所改善,但并未完全解决问题。发现Temp文件夹下存在大量sess_文件,数量达到10万个,尽管总体积不大,但严重影响了系统性能。
针对这种问题,解决方案是删除Temp文件夹中的过期session文件,并调整文件夹权限。使用命令行工具如`del *.* /q /s`删除了文件,但要从根本上解决问题,需要确保IIS_USERS组有删除文件的权限。为此,需要修改Temp文件夹的NTFS权限,将"IIS_USERS"赋予删除文件的权限,这样PHP在结束session时就能正确清理对应的文件,避免文件堆积导致的性能问题。
总结来说,这个故障主要是由于PHP session管理与IIS服务器的权限设置不匹配造成的。通过合理设置Temp文件夹的权限,确保PHP能够正确地清理session文件,可以有效地防止此类问题的发生,保持服务器的高效运行。对于大型的、高并发的PHP应用,定期检查和优化Temp文件夹的权限设置是必要的维护步骤。