我创建了一个在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)
?>
我尝试添加:
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的人都知道为什么?
由于
答案 0 :(得分:3)
出现这种问题仅仅是因为三个原因:
根据php文档Installation on Windows systems,默认用户为 IUSER
因此,您必须将目录所有者'IUSR'
设置为 IIS_IUSRS 组的一部分,如果它不起作用,则尝试设置'IIS AppPool\{YouApplicationPoolName}' from IIS AppPool\DefaultAppPool
Ex。例如IIS AppPool\yourdomain.com
。 IIS8需要此设置。
如何更改目录权限&amp; Windows系统上的用户组。
Rightclick on directory->security->edit
请查看随附的屏幕截图。
答案 1 :(得分:0)
您使用的是哪个版本的PHP。如果小于5.2,则json编码功能可能无法正常工作。使用phpinfo()找出答案。
也可能是$ _POST [&#39;数据&#39;]不存在。尝试放一个数组,看看是不是问题。如:array(1,2,3);
如果没有显示警告,请使用:error_reporting(E_ALL); OR error_reporting(-1);在脚本的顶部。可能是您的主机正在关闭这些错误。这将使您了解问题所在。
主机还可以停用某些PHP功能。有关此问题,请联系您的客户服务。虽然我发现他们不太可能停用你正在使用的那些。
确保文件相对于PHP代码的执行位置存在。如果这是问题,应该运行die命令。您可以使用以下命令查看该文件是否存在:
if(file_exists($ filename))echo&#34; file exists&#34 ;;
其他echo&#34;文件不存在&#34;;
如果上述工作都没有,那么我还没有得到线索!遗憾。
答案 2 :(得分:0)
添加带访问权限的IIS_IUSRS&#34;执行,列出,读取&#34;到属性的安全选项卡。