On Thu, Mar 15, 2012 at 7:51 PM, Larry <lrrrgg@xxxxxxxxx> wrote: > On Thu, Mar 15, 2012 at 12:21 PM, Matijn Woudt <tijnema@xxxxxxxxx> wrote: >> On Thu, Mar 15, 2012 at 4:59 PM, Larry <lrrrgg@xxxxxxxxx> wrote: >>> On Thu, Mar 15, 2012 at 11:53 AM, Daniel P. Brown >>> <daniel.brown@xxxxxxxxxxxx> wrote: >>>> On Thu, Mar 15, 2012 at 11:30, Larry <lrrrgg@xxxxxxxxx> wrote: >>>>> Hello, when I pass a variable whose value originally came from $_GET >>>>> or $_REQUEST to fwrite, fwrite behaves as if it was passed an empty >>>>> string. Note that the file is successfully opened and written to by >>>>> the script, but the variable that originally came from $_GET does not >>>>> have its value interpolated in the text file, even though it does get >>>>> interpolated in the echo(). >>>>> >>>>> ---- Code ---- >>>>> <? >>>>> $meh = $_GET["q"]; >>>>> $writeline = ":" . $meh . ":" . strlen($meh) . PHP_EOL; >>>>> echo ( $writeline ); >>>>> >>>>> $fp = fopen("/tmp/wtf.log","w+"); >>>>> fwrite($fp, $writeline ); >>>>> fclose($fp); >>>>> >>>>> var_dump($writeline); >>>>> ?> >>>> >>>> Are you sure it's not a permissions-based issue, perhaps when >>>> writing as the normal user, then the user as which the web server >>>> runs, et cetera? What happens if you completely remove /tmp/wtf.log >>>> and re-run your script with the appended query string? >>> >>> I have removed the wtf.log file between runs, just did it once more. >>> Same thing happens. A new file is created, and the contents are "::0" >>> >>> So I'm sure its not a permissions issue ( However I'm also sure that >>> this shouldn't be happening so... ) Thanks. >> >> The code is working fine here, of course, it should. Is it really >> because of the $_GET?, have you tried setting $q = "meh123";? >> Also, try using file_put_contents('/tmp/wtf.log', $writeline); instead. >> >> - Matijn > > Yes I have tried to set a variable explicitly with a string, and that > variable does end up interpolated into the file. I just tried using > file_put_contents with the same result. > > Here is a modified version, showing another variable that does work, > and file_put_contents(): > > <? > $meh = $_GET["q"]; > $good = "Yay I go in the File" . PHP_EOL; > $writeline = ":" . $meh . ":" . strlen($meh) . ":" . $good; > echo ( $writeline ); > file_put_contents("/tmp/wtf.log", $writeline ); > var_dump($writeline); > ?> > > Here the response/stdout: > :meh123:6:Yay I go in the File string(31) ":meh123:6:Yay I go in the File " > > But the file is the same: > root@prime:/tmp# rm wtf.log > root@prime:/tmp# ls wtf.log > ls: cannot access wtf.log: No such file or directory > [ I make the request ] > root@prime:/tmp# cat wtf.log > ::0:Yay I go in the File Have you checked apache log files for any warnings/errors? How about writing $_GET['q'] directly? eg. file_put_contents('/tmp/wtf.log', $_GET['q']);? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php