Le code ci-dessous fonctionne presque, mais ce n'est pas vraiment ce que je voulais :
ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);
Y a-t-il un moyen plus naturel ?
Le code ci-dessous fonctionne presque, mais ce n'est pas vraiment ce que je voulais :
ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);
Y a-t-il un moyen plus naturel ?
Vous pouvez installer l'extension Eio
pecl install eio
et dupliquer un descripteur de fichier
$temp=fopen('/tmp/my_stdout','a');
$my_data='my something';
$foo=eio_dup2($temp,STDOUT,EIO_PRI_MAX,function($data,$esult,$request){
var_dump($data,$esult,$request);
var_dump(eio_get_last_error($request));
},$my_data);
eio_event_loop();
echo "something to stdout\n";
fclose($temp);
cela crée un nouveau descripteur de fichier et réécrit le flux cible de STDOUT
ceci peut également être fait avec STDERR
et les constantes STD[OUT|ERR] sont toujours utilisables
Voici une solution moche qui m'a été utile pour un problème que j'avais (besoin de déboguer).
if(file_get_contents("out.txt") != "en cours")
{
file_put_contents("out.txt","en cours");
$content = file_get_contents('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
file_put_contents("out.txt",$content);
}
L'inconvénient principal est que vous feriez mieux de ne pas utiliser les variables $_POST. Mais vous n'êtes pas obligé de le mettre au tout début.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Vous devriez vraiment accepter une réponse ici. Bas Peters vous a donné la solution parfaite.
1 votes
Le code d'exemple redirige la SORTIE vers un fichier, pas vers STDOUT, la solution de Bas semble fonctionner uniquement parce que les environnements CLI (et dans une moindre mesure CGI) utilisent ces flux de manière interchangeable. Le module PHP Apache ne le fait pas.