2009-04-01 9 views
0

Lors de l'exécution du bloc de code suivant:PHP fopen() Limite Redirection atteint Erreur

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])."')"); 
    } 
} 

Le script échoue avec l'erreur suivante:

fopen(test.html) [function.fopen]: failed to open stream: Redirection limit reached, aborting in /data/www/example.com/public/test.php on line 843

Quelles sont les causes de cette erreur et comment puis-je corriger il?

Répondre

7

Où se trouvent les fichiers que vous essayez d'ouvrir? Sont-ils sur le système de fichiers local ou essayez-vous d'y accéder via HTTP (S)? Si vous utilisez un wrapper de protocole réseau, cette erreur est probablement liée à un trop grand nombre de redirections HTTP (dans le cas du protocole HTTP (S)) entre votre script et le fichier que vous voulez ouvrir. Le default redirection limit should be 20. Comme 20 redirections sont assez nombreuses, il peut y avoir une erreur dans le nom de fichier lui-même (causant par exemple le serveur web à l'autre extrémité pour faire des vérifications orthographiques) ou l'autre serveur est mal configuré ou il y a des mesures de sécurité en place ou ...

Si vous ressentez le besoin d'étendre les 20 redirections, vous pouvez utiliser un contexte de flux.

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

S'il vous plaît voir:

0

Il est très probable que le fichier que vous essayez d'ouvrir essaie d'ouvrir un autre fichier et atteint ainsi la limite de redirection.

Éditer: Quand je dis probable, je veux dire que cela peut causer l'erreur et cela peut être cette situation.