OVH Cloud OVH Cloud

fopen

6 réponses
Avatar
thierry S
bonjour

j'ai le bout de script suivant:
note $req est une URL.

$org = fopen($req, "rb");
if ( !$org ) {
return -1;
}
$buf = fread($org, 5000);
$dest = fopen($file, "wb");
fwrite($dest, $buf, 5000);
while ( !feof($org) ) {
$buf = fread($org, 5000);
fwrite($dest, $buf, 5000);
}
fclose($dest);
fclose($org);
return 1;

qui marche parfaitement avec PHP 4.2.1
mais qui me renvoie systématiquement un fichier vide avec PHP 4.3.4

je sèche, une idée

merci d'avance

thierry

6 réponses

Avatar
P'tit Marcel
"thierry S" écrivit
news:3fb296a2$0$227$:

j'ai le bout de script suivant:
note $req est une URL.

qui marche parfaitement avec PHP 4.2.1
mais qui me renvoie systématiquement un fichier vide avec PHP 4.3.4

je sèche, une idée


si req est un paramètre du script, pense à faire au début :
$req = $_REQUEST['req'];

à part ça, je suggère:

$org = fopen($req, "rb");
if ( !$org ) {
return -1;
}
if ( !is_writable( $file ) ) {
return -1;
}
if ( !$dest ) {
return -1;
}
$buf = fread($org, filesize ($req));
fwrite($dest, $buf);
fclose($dest);
fclose($org);
return 1;


on peut aussi tout bonnement faire :

copy ( $req, $file) or return -1;
return 1;

Avatar
Thierry SCHMIT
re

même verdict.
$req est une url bien formée http://domaine/page?params

et la copy me renvoie un fichier vide si le script tourne sous PHP 4.3.3
et un fichier non vide (celui que j'attends) avec PHP 4.2.1

copy ( $req, $file) or return -1;
return 1;


Avatar
Thierry SCHMIT
bonjour,

je comprends de mieux en mieux mon problème.
Il vient du fait que lorsque je fais un fread()
sur une ressource distante bien ouverte par un fopen,
le serveur me renvoie un cookie.
Je suis donc passé aux sockets et je lis bien le cookie envoyé...

mais après je ne sais plus quoi faire pour obtenir la page tant désirée et
qui
devrait suivre le cookie.....

merci pour vos suggestions

Thierry
Avatar
Thibaut Allender
Thierry SCHMIT wrote:

merci pour vos suggestions


bizarre cette histoire de cookie

as-tu quand meme essayé le fread avec la methode donnée en exemple dans
la doc anglaise de fread()
(http://www.php.net/manual/en/function.fread.php) ?

<?php
$handle = fopen ("http://www.example.com/", "rb");
$contents = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
?>

a+

--
freelance + web design + php dev + digital photo
+ 32 496 26 75 76 + http://www.capsule.org

Avatar
Savut
verifie si t'a allow_url_fopen a Enable

Savut

"thierry S" a écrit dans le message de
news:3fb296a2$0$227$
bonjour

j'ai le bout de script suivant:
note $req est une URL.

$org = fopen($req, "rb");
if ( !$org ) {
return -1;
}
$buf = fread($org, 5000);
$dest = fopen($file, "wb");
fwrite($dest, $buf, 5000);
while ( !feof($org) ) {
$buf = fread($org, 5000);
fwrite($dest, $buf, 5000);
}
fclose($dest);
fclose($org);
return 1;

qui marche parfaitement avec PHP 4.2.1
mais qui me renvoie systématiquement un fichier vide avec PHP 4.3.4

je sèche, une idée

merci d'avance

thierry


Avatar
thierry S
oui, j'ai vérifié, la configuration PHP est OK

"Savut" a écrit dans le message de
news:X35tb.4799$
verifie si t'a allow_url_fopen a Enable

Savut