gpt4 book ai didi

javascript - PHP 脚本写入本地主机上的文件,但不写入 IIS 服务器上的文件

转载 作者:可可西里 更新时间:2023-11-01 12:57:44 24 4
gpt4 key购买 nike

我制作了一个在本地主机上运行良好的简单网站。所以我把它放在 IIS Windows 2008r2 服务器上,现在我的 PHP 脚本不再写入我的 JSON 文件。我已经检查了服务器并在其上安装了 PHP,所以我真的不知道出了什么问题或在哪里查看。

我仍然没有让它工作,所以我想我会更详细地解释情况。

所以这个脚本可以在本地主机上运行,​​但不能在 IIS 服务器上运行。

<?php
$myFile = "../json/countries.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = json_encode($_POST["data"]);
fwrite($fh, $stringData);
fclose($fh)
?>

我试过添加:

error_reporting(E_ALL);
ini_set('display_errors', '1');

chmod("../json/countries.json", 0644);

到 php 但没有看到任何不同的结果或任何错误。

这是启动进程的 javascript 函数,将对象输出到控制台确实显示了要保存的正确数据。

function saveJson(object, file) {

console.log("Saving JSON data: " + JSON.stringify(object));

$.ajax
({
type: "POST",
dataType : 'json',
async: false,
url: file,
data: { data:object },
success: function () {console.log("Thanks!"); },
failure: function() {console.log("Error!");}
});

仍然没有更改 json 文件。熟悉 Windows Server 和 PHP 的人可能知道原因吗?

谢谢

最佳答案

出现这种问题只有三个原因:

  1. 没有合适的目录所有者。例如:- 在 Apache 中,默认用户是 www:data。
    • 首先检查目录所有者。
  2. 您没有足够的目录写入权限,即 755
    • 检查目录权限
  3. 写入或上传文件的目录路径不正确。
    • 检查写入文件的目录路径。

根据php文档Installation on Windows systems默认用户是 IUSER

因此您必须设置目录所有者 'IUSR'IIS_IUSRS 组的一部分,如果它不起作用则尝试设置 'IIS AppPool\{YouApplicationPoolName}' 来自 IIS AppPool\DefaultAppPool 例如。例如IIS AppPool\yourdomain.com。 IIS8 需要此设置。

  1. 首先尝试将所有者更改为 IUSER。它应该根据 php 文档工作。
  2. 设置目录的写权限。

如何在 Windows 系统上更改目录权限和用户组。

Rightclick on directory->security->edit

请查看随附的屏幕截图。

Change user group  & permission

关于javascript - PHP 脚本写入本地主机上的文件,但不写入 IIS 服务器上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com