On Thu, Mar 15, 2012 at 2:57 PM, Matijn Woudt <tijn...@gmail.com> wrote:
> On Thu, Mar 15, 2012 at 7:51 PM, Larry <lrr...@gmail.com> wrote:
>> On Thu, Mar 15, 2012 at 12:21 PM, Matijn Woudt <tijn...@gmail.com> wrote:
>>> On Thu, Mar 15, 2012 at 4:59 PM, Larry <lrr...@gmail.com> wrote:
>>>> On Thu, Mar 15, 2012 at 11:53 AM, Daniel P. Brown
>>>> <daniel.br...@parasane.net> wrote:
>>>>> On Thu, Mar 15, 2012 at 11:30, Larry <lrr...@gmail.com> 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']);?

Yes I tried using $_GET['q'] directly to no avail. However, you found
a clue! apache error.log is giving this:
PHP Notice:  Undefined index: q in /var/www/test/search.php on line 2

Strange b/c I am obtaining and using that value successfully in echo()!

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

Reply via email to