PHP fopen () Redirection limite atteinte Erreur
Question
Lors de l'exécution du bloc de code suivant:
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 flux: limite de redirection atteint, dans l'abandon /data/www/example.com/public/test.php sur la ligne 843
Quelles sont les causes de cette erreur et comment puis-je corriger?
La solution
Où sont les fichiers situés 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 une enveloppe de protocole réseau alors, cette erreur est très probablement liée à un trop grand nombre (HTTP - dans le cas du protocole HTTP (S)) réoriente sur le chemin de votre script dans le fichier que vous souhaitez ouvrir . limite de redirection par défaut devrait être de 20 . 20 réoriente sont tout à fait beaucoup il pourrait y avoir une erreur dans le nom du fichier lui-même (par exemple, à l'origine le serveur Web à l'autre bout de faire quelques SpellCheck-réoriente) ou l'autre serveur est mal configuré ou il y a des mesures de sécurité en place ou ...
Si vous vous sentez la nécessité d'étendre les 20 vous réoriente 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:
Autres conseils
Il est très probablement dû au fichier que vous essayez d'ouvrir est d'essayer d'ouvrir un autre fichier et d'atteindre thusly la limite de redirection.
Edit:. Quand je dis probablement, je veux dire que peut provoquer l'erreur et cela peut être la situation