2013-05-18 46 views
0

我正在使用PHP腳本處理來自Flash應用程序的表單數據。這是代碼:Flash提交的PHP處理表單數據,ModSecurity錯誤

<?php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
// create the target directory if it doesn't exist // 
    $dir = ($_GET['destination']) ? $_GET['destination'] : 'images'; 
    if (!file_exists($dir)) mkdir($dir, 0777, true); 

// write the file to the target directory //   
    $fp = fopen($dir.'/'.$_GET['filename'], "wb"); 
    fwrite($fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ]); 
    fclose($fp); 
} 
else{ 
    echo('file data not received'); 
} 
?> 

被寫入的文件是一個圖像,原始數據由Flash應用程序發送。 Flash應用程序有三個版本都由同一片PHP處理。其中兩人處理得很好;第三會正確處理的大約兩倍左右,然後我開始收到此錯誤在日誌中:

[週五5月17日17點19分56秒2013] [錯誤] [客戶172.251.78.205]的ModSecurity :錯誤讀取請求體:連接被對方​​復位[主機名 「客戶端URL」] [URI 「/flash/php/saveImage.php」] [UNIQUE_ID 「UZbJGmFKGIcAAB37ctwAAABO」]

從我所收集的,這意味着客戶端連接在表單數據完成發送之前超時。另一件事是,如果我手動刪除映像存儲到的目錄,並讓腳本創建它將每次都有效。幾個小時以來,我一直在頭撞我的桌子。任何人都可以提供一些有關正在發生的事情以及我如何解決此問題的見解?如果需要更多信息,請告訴我,我會爲您提供您需要的任何信息。提前致謝。

我嘗試過使用set_time_limit(0);和ignore_user_abort(true);但似乎都沒有任何效果。

+0

版本之間有什麼區別?他們是否以不同的方式處理數據或使用更大的圖像,或...?如果您爲每個圖像創建一個新的目錄,僅用於測試,會發生什麼情況。 images/pictureone.jpg/pictureone.jpg – RST

+0

今天測試過。像以前一樣,我可以經歷大約2次,直到它開始拋出Mod Security錯誤。然而,與以前不同的是,如果我等待一分鐘左右,我可以再處理2個帖子,直到它再次出錯。以前,它會完全停止工作。那麼,進展如何? –

+0

有沒有其他人有任何建議? –

回答

0

所以我設法找到了問題和解決方案。我連續調用2個PHP腳本,一個將圖像保存到磁盤,另一個將該項目添加到購物車。發生的情況是購物車腳本在圖像保存完成之前發射,並且會暫停處理。最後我最終做的是在兩個PHP調用之間添加一個定時的「Thank You For Shopping With Us」。它只持續幾秒鐘,但它足以讓圖像保存腳本完成。自此以後沒有任何問題。