簡體   English   中英

PHP fopen() 達到重定向限制錯誤

[英]PHP fopen() Redirection Limit Reached Error

執行以下代碼塊時:

foreach($eventfiles as $eventfile)
{
    if($eventfile['filename'])
    { 
        $file = $eventfile['filepath'];
        // Open File
        if( !($fp = fopen($file, "r")))
        {
            echo '<br>CAN NOT READ FILE.';
            exit;
        }
        // Read data from the file into $data
        $data = "";
        while (!feof($fp)) $data .= fread($fp,1024);
        query("update event_rtab set html = '".escape($data)."' where id = {$eventfile[id]}");
    }
    if($eventfile['eventType']=='email')
    {
        query("INSERT INTO event_email_rtab (event_id,subject) values ($eventfile[id],'".escape($eventfile[email_subject])."')");
    }
}

腳本失敗並出現以下錯誤:

fopen(test.html)[function.fopen]:無法打開 stream:達到重定向限制,在 /data/www/example.com/public/test.php 中的第 843 行中止

是什么導致了這個錯誤,我該如何糾正它?

您要打開的文件在哪里? 它們是在本地文件系統上還是您試圖通過 HTTP(S) 訪問它們?

如果您正在使用某些網絡協議包裝器,那么此錯誤很可能與在從腳本到要打開的文件的過程中重定向過多(HTTP - 在 HTTP(S) 協議的情況下)有關。 默認重定向限制應為 20 由於 20 次重定向非常多,文件名本身可能存在一些錯誤(導致例如另一端的網絡服務器進行一些拼寫檢查重定向)或其他服務器配置錯誤或有一些安全措施或......

如果您覺得需要擴展 20 個重定向,您可以使用 stream 上下文。

$context = array(
    'http'=>array('max_redirects' => 99)
);
$context = stream_context_create($context);
// hand over the context to fopen()
$fp = fopen($file, 'r', false, $context);
// ...

請參見:

這很可能是因為您嘗試打開的文件正在嘗試打開另一個文件,從而達到重定向的限制。

編輯:當我說可能時,我的意思是這可能導致錯誤,這可能就是這種情況。

暫無
暫無

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

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