当前位置:  开发笔记 > 编程语言 > 正文

PHP fopen()重定向限制到达错误

如何解决《PHPfopen()重定向限制到达错误》经验,为你挑选了1个好方法。

执行以下代码块时:

foreach($eventfiles as $eventfile)
{
    if($eventfile['filename'])
    { 
        $file = $eventfile['filepath'];
        // Open File
        if( !($fp = fopen($file, "r")))
        {
            echo '
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]:无法打开流:达到重定向限制,在843行/data/www/example.com/public/test.php中止

是什么导致此错误,我该如何纠正?



1> Stefan Gehri..:

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

如果您正在使用某些网络协议包装器,则此错误很可能与太多连接(HTTP(在HTTP(S)协议的情况下)重定向到从您的脚本到您要打开的文件的路上.该默认重定向上限应该是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);
// ...

请参阅:

stream_context_create()

HTTP上下文选项

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有