PHP脚本写入localhost上的文件但不写入IIS服务器上

the*_*mes 7 javascript php iis json windows-server-2008-r2

我已经创建了一个在localhost上工作正常的简单网站.所以我把它放在IIS Windows 2008r2服务器上,现在我的PHP脚本不再写入我的JSON文件了.我检查了服务器并安装了PHP,所以我真的不知道什么是错的或者在哪里看.

我还没有开始工作,所以我想更详细地解释一下情况.

因此,此脚本适用于localhost,但不适用于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)
?>
Run Code Online (Sandbox Code Playgroud)

我试过添加:

error_reporting(E_ALL);
ini_set('display_errors', '1');
Run Code Online (Sandbox Code Playgroud)

和

chmod("../json/countries.json", 0644);
Run Code Online (Sandbox Code Playgroud)

到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!");}
});
Run Code Online (Sandbox Code Playgroud)

}

仍然没有更改json文件.任何善于使用Windows Server和php的人都知道为什么?

谢谢

raj*_*ade 3

出现这种问题无外乎三个原因:

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

根据php文档在Windows系统上安装默认用户是IUSER

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

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

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

Rightclick on directory->security->edit
Run Code Online (Sandbox Code Playgroud)

请检查随附的屏幕截图。

更改用户组和权限