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

我做了一个简单的网站,在本地主机上正常工作。 所以我把它放在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都可以知道为什么好?

谢谢


这种问题仅出于三个原因:

  • 没有正确的目录owner.Ex: - 在Apache默认用户是www:data。
  • 首先检查目录所有者。
  • 你没有足够的写入权限的目录,即755
  • 检查目录权限
  • 路径对于写入或上载文件的目录不正确。
  • 检查你正在写文件的目录路径。
  • 根据php文档在Windows系统上安装默认用户是IUSER

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

  • 首先尝试将所有者更改为IUSER。 它应该根据php文档工作。
  • 设置目录的写入权限。
  • 如何在Windows系统上更改目录权限和用户组。

    Rightclick on directory->security->edit
    

    请检查所附的屏幕截图。

    更改用户组和权限


  • 你使用的是什么版本的PHP。 如果它小于5.2,json编码功能可能不起作用。 使用phpinfo()来查明。

  • 也可能是$ _POST ['data']不存在。 尝试把数组,而不是看看这是否是问题。 像:array(1,2,3);

  • 另外,如果没有警告显示,请使用:error_reporting(E_ALL); OR error_reporting(-1); 在脚本的顶部。 这可能是您的主机正在关闭这些错误。 这会让你看到问题所在。

  • 主机还可以停用某些PHP功能。 有关此问题,请联系您的客户服务。 尽管我发现他们不太可能已经停用了你正在使用的那些。

  • 确保文件相对于正在执行的PHP代码的相对位置存在。 如果这是问题,死命令应该运行。 您可以使用以下命令查看文件是否存在:

    if(file_exists($ filename))echo“file exists”;

    其他回声“文件不存在”;

  • 如果没有上述工作,那么我还没有一个线索! 抱歉。


    将具有访问权限的IIS_IUSRS添加到属性的安全选项卡“执行,列表,读取”。

    链接地址: http://www.djcxy.com/p/22619.html

    上一篇: PHP scripts writes to file on localhost but not on IIS server

    下一篇: Can't access QML item by id inside SplitView