PHP fopen () Достигнут предел ошибки перенаправления - PullRequest
0 голосов
/ 01 апреля 2009

При выполнении следующего блока кода:

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

Что вызывает эту ошибку и как я могу ее исправить?

Ответы [ 2 ]

7 голосов
/ 01 апреля 2009

Где находятся файлы, которые вы пытаетесь открыть? Они находятся в локальной файловой системе или вы пытаетесь получить к ним доступ через 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);
// ...

Пожалуйста, смотрите:

0 голосов
/ 01 апреля 2009

Весьма вероятно, что файл, который вы пытаетесь открыть, пытается открыть ДРУГОЙ файл и, таким образом, достигает предела перенаправления.

Редактировать: когда я говорю, вероятно, я имею в виду, что это может вызвать ошибку, и это может быть такая ситуация.

...