Re: Variables are empty only in fwrite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux