Author |
|
dg
Joined: 18 Feb 2016 Posts: 6
|
Posted: Mon 04 Apr '16 16:18 Post subject: PHP : Undefined variable _GET |
|
|
I got a problem with a php webapplication. It stops working after 10-20 hours (not always the same time) for no reason because $_GET is not defined.
The request looks like:
http://host/index.php?id=1
the index file has a lil code snippet like:
Code: | if (isset($_GET['id']) && is_numeric($_GET['id'])) {
$id = intval($_GET['id']);
} else {
die('wrong id');
} |
A var_dump of $_GET returns NULL. A var_dump of $_SERVER shows the REQUEST_METHOD is GET and the QUERY_STRING is id=1. A var_dump() of $_REQUEST shows id => 1, so it's only $_GET that isn't working.
When that happens it happens for all webapplications on the server and for all users. After restarting the webserver everything is working again for some hours...
System is Windows 2008 R2, Apache 2.4.18 32 Bit/PHP 7.0.5 32 Bit.
No errors inside the php_errors.log, errors.log of httpd or the syslogs.
Configs are pretty much standard.
php.ini:
http://pastebin.com/xhYb0h0n
httpd.conf
http://pastebin.com/YprJjpsW |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7371 Location: Germany, Next to Hamburg
|
Posted: Fri 08 Apr '16 17:26 Post subject: |
|
|
I've tested that and couldn't reproduce that. The only difference is that I don't load the oci8 driver and run PHP over fcgid.
Speaking of fcgid: if you run PHP over that you can define a lifetime ( FcgidProcessLifeTime) and PHP will be restarted without the need of restarting the webserver. |
|
Back to top |
|
dg
Joined: 18 Feb 2016 Posts: 6
|
Posted: Thu 14 Apr '16 10:00 Post subject: |
|
|
I can't reproduce it either. As I said it just happens after 10-20 hours and I don't know the reason. Logfiles don't show anything.
Had the problem with PHP 7.0.4 and PHP 7.0.5. I'll try to update Apache to 2.4.20 and maybe disable some of the features we are using like mod_deflate. |
|
Back to top |
|
CamaroSS
Joined: 24 Jan 2013 Posts: 78 Location: RF, Tver
|
Posted: Thu 14 Apr '16 16:49 Post subject: |
|
|
Look for assignments and unset() in your code, maybe the application logic does apply one of those to $_GET under certain conditions. It also may be mistakenly passed by a reference to some functions. There are actually lots of ways, so it's best to check all the usages of $_GET variable. |
|
Back to top |
|
dg
Joined: 18 Feb 2016 Posts: 6
|
Posted: Fri 15 Apr '16 16:01 Post subject: |
|
|
CamaroSS wrote: | Look for assignments and unset() in your code, maybe the application logic does apply one of those to $_GET under certain conditions. It also may be mistakenly passed by a reference to some functions. There are actually lots of ways, so it's best to check all the usages of $_GET variable. |
Was the first thing I checked. Noone manipulated $_GET and no ini_set's either.
Even when I create a file that only has the following code:
Code: | <?php
var_dump($_GET); |
I get null when I open that page (index.php?param=test) while $_REQUEST and $_SERVER both show the correct parameters/querystring. |
|
Back to top |
|
unpluggeduk
Joined: 13 Feb 2017 Posts: 1 Location: United Kingdom
|
Posted: Mon 13 Feb '17 14:01 Post subject: |
|
|
This has been a problem for us as well
It's not just $_GET none of the superglobals seem to be setup.
The heavier the load the worse the problem seems to become.
I have has to resort to putting in code to try and restart Apache when it sees any of the super globals as "Not Set" |
|
Back to top |
|