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都可以知道为什么好?
谢谢
这种问题仅出于三个原因:
根据php文档在Windows系统上安装默认用户是IUSER
因此,您必须设置目录所有者'IUSR'
是IIS_IUSRS组的一部分,如果它不起作用,则尝试'IIS AppPool{YouApplicationPoolName}' from IIS AppPoolDefaultAppPool
Ex中设置'IIS AppPool{YouApplicationPoolName}' from IIS AppPoolDefaultAppPool
。 例如IIS AppPoolyourdomain.com
。 IIS8需要此设置。
如何在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