【问题标题】:PHP fopen() Redirection Limit Reached ErrorPHP fopen()重定向限制达到错误
【发布时间】:2009-04-01 13:54:36
【问题描述】:

执行以下代码块时:

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]:打开失败 流:达到重定向限制, 中止 /data/www/example.com/public/test.php 在第 843 行

是什么导致了这个错误,我该如何纠正它?

【问题讨论】:

    标签: php fopen


    【解决方案1】:

    您要打开的文件位于何处?它们是在本地文件系统上还是您尝试通过 HTTP(S) 访问它们?

    如果您正在使用一些网络协议包装器,则此错误很可能与在从脚本到要打开的文件的过程中重定向过多(HTTP - 在 HTTP(S) 协议的情况下)有关. default redirection limit should be 20。由于 20 次重定向非常多,文件名本身可能存在一些错误(导致例如另一端的网络服务器进行一些拼写检查重定向)或其他服务器配置错误或有一些安全措施或......

    如果您觉得需要扩展 20 个重定向,您可以使用流上下文。

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

    请看:

    【讨论】:

      【解决方案2】:

      这很可能是由于您尝试打​​开的文件正在尝试打开另一个文件,从而达到重定向限制。

      编辑:当我说可能时,我的意思是可能导致错误,这可能就是这种情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 2012-09-07
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 2019-07-10
        • 2013-09-20
        相关资源
        最近更新 更多