Ik ben bezig een stukje library te schrijven die een internetpagina op moet halen.
Nu wil ik graag mbv van curl de inhoud van mijn request in een memory stream schrijven.
Code:
Dit werkt niet. Terwijl ik eigenlijk zeker weet dat het zo moet werken. Als ik nl. van de memory stream een file-stream maakt, werkt dit wel:
Nu zijn er verschillende opties:
1. ik maak ergens een fout
2. php ondersteund dit gewoon niet
3. dit is een bug in php
Ziet iemand misschien een fout? Of weet iemand of dit een bug is (of dat het zo hoort?). Op de php site staat alleen dat elke stream geopen met fopen() meegegeven kan worden aan curl.
(Voor de duidelijkheid, code-snippet 1 geeft als output "Content||/Content" en nr2 geeft netjes "Content|[website inhoud]|/Content")
Nu wil ik graag mbv van curl de inhoud van mijn request in een memory stream schrijven.
Code:
PHP:
1
2
3
4
5
6
7
8
9
10
| $c = curl_init("http://example.com"); $st = fopen("php://memory", "r+"); curl_setopt($c, CURLOPT_FILE, $st); if(!curl_exec($c)) die ("error: ".curl_error($c)); rewind($st); echo "Content|".htmlspecialchars(stream_get_contents($st))."|/Content"; fclose($st); |
Dit werkt niet. Terwijl ik eigenlijk zeker weet dat het zo moet werken. Als ik nl. van de memory stream een file-stream maakt, werkt dit wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| $c = curl_init("http://example.com"); $file = "/tmp/phptest".rand().""; touch($file); $st = fopen($file, "r+"); curl_setopt($c, CURLOPT_FILE, $st); if(!curl_exec($c)) die ("error: ".curl_error($c)); rewind($st); echo "Content|".htmlspecialchars(stream_get_contents($st))."|/Content"; fclose($st); unlink($file); |
Nu zijn er verschillende opties:
1. ik maak ergens een fout
2. php ondersteund dit gewoon niet
3. dit is een bug in php
Ziet iemand misschien een fout? Of weet iemand of dit een bug is (of dat het zo hoort?). Op de php site staat alleen dat elke stream geopen met fopen() meegegeven kan worden aan curl.
(Voor de duidelijkheid, code-snippet 1 geeft als output "Content||/Content" en nr2 geeft netjes "Content|[website inhoud]|/Content")