IIS7上的PHP fopen / fwrite问题

时间:2009-12-08 15:15:53

标签: php iis iis-7 windows-server-2008

我在Windows Server 2008 R2上的IIS7上运行PHP5。查看以下代码,该代码将通过POST请求参数接收的字符串写入XML文件。

<?php
$temp = "";
if($_SERVER['REQUEST_METHOD']=="POST"){
    if($_POST["operation"]=="saveLevels"){
        $fileHandle = fopen("c:\\inetpub\\wwwroot\\test\\xml\\levels.xml", 'w');
        fwrite($fileHandle, stripslashes($_POST["xmlString"]));
        fclose($fileHandle);
        $temp = "success";
    }elseif($_POST["operation"]=="saveRules"){
        $fileHandle = fopen("c:\\inetpub\\wwwroot\\test\\xml\\rules.xml", 'w');
        fwrite($fileHandle, stripslashes($_POST["xmlString"]));
        fclose($fileHandle);
        $temp = "success";
    }
}

当我发出POST请求来调用此代码时,拥有/托管包含php文件的站点的应用程序池停止(由于一些致命错误,因为它在事件查看器中写入)然后IIS继续响应HTTP503之后。现在,我已经在该(test / xml)目录上给了IUSR和IISUSRS适当的权限。这两个XML文件还没有存在,我已经在XML文件已经存在时尝试了代码但是;它的行为方式相同。 这个PHP代码有什么问题?我已经在linux-box上尝试过了,它表现得像预期的那样。

编辑:我已经尝试了这个代码的各种不同版本,并得出了这个结果:当POST请求唤醒时,fopen调用,allways返回FALSE或者有时返回NULL,并导致应用程序池自身停止。完全相同的代码,与GET请求一起使用,具有完全相同的参数。所以;我不知道问题是什么,但是;当时我将使用GET请求进行此操作。

1 个答案:

答案 0 :(得分:0)

你能为两个选项设置var_dump($ fileHandle),向我们展示它的含义。我注意到你只是假设文件被打开,而不是检查值(如果它是FALSE,fwrite会失败)