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

标签 javascript php json iis windows-server-2008-r2

我制作了一个在本地主机上运行良好的简单网站。所以我把它放在 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/

相关文章:

json - 无法在 https 服务器中下载 json 数据,在本地同样可以正常工作

javascript - window.location 未正确更新

javascript - 比较数字 - 异常行为

javascript - this 在模块模式中未定义

php - 不知道如何处理使用 MySQL DB 从服务器 PHP 到 Android 的数据获取

javascript - Jquery/Ajax - 在 HTML 中获取图片和 Youtube

javascript - DatePicker、FullCalendar 和 MySQL 事件日期最终缩短了一天

php - 甲骨文、PDO_OCI 与 OCI8

PHP MYSQL mysqli_fetch_array() 无结果(外来字符)

Java jackson : serialize a class with two field instead of all class