Edit report at https://bugs.php.net/bug.php?id=69983&edit=1
ID: 69983
Updated by: cmb@php.net
Reported by: php7testing at prodpartners dot com
-Summary: get_browser fails on 7.0 with user agent of null
works on 5.6.8
+Summary: get_browser fails on 7.0 with user agent of null
works on 5.6.10
-Status: Open
+Status: Verified
Type: Bug
-Package: *General Issues
+Package: Unknown/Other Function
-Operating System: Centos 7
+Operating System: *
PHP Version: 7.0.0alpha2
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
I can confirm this issue for PHP 7.0.0-alpha2 with the CLI server
on Windows. Works fine with PHP 5.6.10, though. I'll do some
debugging.
Previous Comments:
------------------------------------------------------------------------
[2015-07-03 16:17:32] php7testing at prodpartners dot com
Perhaps I did not make it clear. The problem only exists when you use a value of NULL for the user
agent parameter. It works when I provide $_SERVER["HTTP_USER_AGENT"] for that parameter.
I don't think that the problem has anything to do with the fastcgi configuration because of two
reasons:
1) I am using Apache 2.4 and php-fpm not nginx
2) It works with the same configuration on the same machine under 5.6.8
The following is the output when I first echo $_SERVER["HTTP_USER_AGENT"] and then call
get_browser(NULL, true). I included 2 "<br>" after echoing
$_SERVER["HTTP_USER_AGENT"] to delineate that output from that of get_browser.
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Warning: get_browser(): HTTP_USER_AGENT variable is not set, cannot determine user agent name in
/usr/local/apache2/htdocs/php7testing/browscap_test.php on line 3
The main reason that I am bringing this up is that PHP 7 behavior is different from 5.6 and from the
documentation. I am trying to help eliminate problems for others making the transition from 5.X to
7.
------------------------------------------------------------------------
[2015-07-03 14:19:21] laruence@php.net
you can check $_SERVER["HTTP_USER_AGENT"] by dumping it before calling get_browse, this
probably relates to some issue of your configuration in nginx fastcgi params
------------------------------------------------------------------------
[2015-07-03 14:17:49] laruence@php.net
you can check $_SERVER["HTTP_USER_AGENT"] by dumping it before calling get_browse, this
probably relates to some issue of your configuration in nginx fastcgi params
------------------------------------------------------------------------
[2015-07-03 11:46:25] php7testing at prodpartners dot com
Using the code snippet in this report:
With 5.6.8 I do not get a warning and I get the following output from print_r:
Array ( [browser_name_regex] => ~^mozilla/5\.0 \(.*windows nt 6\.1.*\) gecko.* firefox/38\.0.*$~
[browser_name_pattern] => Mozilla/5.0 (*Windows NT 6.1*) Gecko* Firefox/38.0* [parent] =>
Firefox 38.0 [platform] => Win7 [comment] => Firefox 38.0 [browser] => Firefox [version]
=> 38.0 [device_type] => Desktop [ismobiledevice] => [istablet] => )
With 7.0 Alpha 2 I get the warning listed in this bug report and I do not get any output from
print_r.
The tests are run on the same machine. To change versions I stop php-fpm, run make install for the
version that I want, and then start php-fpm.
------------------------------------------------------------------------
[2015-07-03 02:59:07] laruence@php.net
$ /home/huixinchen/local/php56/bin/php -dbrowscap=/tmp/browscap.ini /tmp/1.php
Warning: get_browser(): HTTP_USER_AGENT variable is not set, cannot determine user agent name in
/tmp/1.php on line 2
I get same warning in 5.6, did I misunderstand you?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=69983
--
Edit this bug report at https://bugs.php.net/bug.php?id=69983&edit=1