簡體   English   中英

IIS7上的PHP fopen / fwrite問題

[英]PHP fopen/fwrite problem on IIS7

我在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上嘗試過它,並且表現出預期的效果。

編輯:我嘗試過此代碼的各種不同版本,並得出以下結果:fopen調用在被POST請求喚醒時始終返回FALSE或有時為NULL,並導致自身的應用程序池停止。 完全相同的代碼對於具有相同參數的GET請求可以正常工作。 所以; 我不知道是什么問題,但是; 目前,我僅將GET請求用於此操作。

您能否同時使用var_dump($ fileHandle)來向我們展示它的功能。 我注意到您只是假設文件已打開,而不是檢查值(如果為FALSE,則fwrite將會失敗)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM