Edit report at https://bugs.php.net/bug.php?id=61148&edit=1

 ID:                 61148
 User updated by:    khaos337 at gmail dot com
 Reported by:        khaos337 at gmail dot com
 Summary:            auto_prepend_file and auto_append_file seemingly
                     load on favicon request
 Status:             Not a bug
 Type:               Bug
 Package:            *General Issues
 Operating System:   FreeBSD7.3 (amd64)
 PHP Version:        5.3.10
 Block user comment: N
 Private report:     N

 New Comment:

Understood, just one more quick question though.  If the 404 page is the one 
causing the file to fire again, which would make sense because it is a php 
page, 
why wouldn't the $_SERVER['REQUEST_URI'] kick back the 404 page 
'/error404.php/' 
instead of '/favicon.ico/'?


Previous Comments:
------------------------------------------------------------------------
[2012-02-20 20:34:36] ras...@php.net

A favicon request is a request like any other. If the favicon.ico file doesn't 
exist the request will trigger a 404 and your 404 handler will be run. The same 
will happen if your main request tries to load images/css/js that don't exist, 
so 
you either need to make sure your main requests never generate a 404 or you 
need 
to make your 404 handler/prepend script smarter. You can have it check the 
requested URI and skip doing whatever it is you don't want it doing multiple 
times per page load. This isn't something we can fix at the PHP level. PHP is 
doing what you are asking it to do here.

------------------------------------------------------------------------
[2012-02-20 20:30:49] khaos337 at gmail dot com

I do have a 404 handler pointed at a .php script but I didn't even think of 
that 
because I didn't think it had anything to do with a favicon.  As for how the 
web 
server is configure I'm not sure because I'm on a managed server so I don't 
have 
that access.  I will test it with out the 404 redirect and get back to you.

------------------------------------------------------------------------
[2012-02-20 20:26:09] ras...@php.net

Wouldn't this only happen if you have your web server configured to send 
favicon.ico request through PHP? Or, perhaps if you have a 404 handler pointed 
at 
a PHP script? In a normally configured web server I don't see this happening.

------------------------------------------------------------------------
[2012-02-20 20:23:34] khaos337 at gmail dot com

I was able to confirm the issue occurs across all browsers including firefox

------------------------------------------------------------------------
[2012-02-20 19:55:19] khaos337 at gmail dot com

Description:
------------
Pages that are loaded with auto_prepend_file and auto_append_file load multiple 
times per page request if there is no favicon.ico located in the root 
directory.  
I believe this only happens with chrome and IE, have not been able to replicate 
the issue with firefox.

You will see using this configuration, if you load index.php your database will 
get at least 2 entries, one for '/index.php', and one for and one for 
'/favicon.ico/'

This might just be a matter of appending the documentation if this is deemed 
"not 
a bug" because according the php.net manual auto_prepend_file and 
auto_append_file 
should function exactly as the require() function.  However if this code was 
put 
in index.php as "require('prepend.php')" instead of being autoloaded it would 
always only load once.

Test script:
---------------
.htaccess:
php_value  auto_prepend_file /path_to_file/prepend.php

prepend.php:
<?php 
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
$mysqli->query("INSERT INTO uri_test (uri, time) VALUES 
('$_SERVER[REQUEST_URI]',now())");
?>

Expected result:
----------------
expected result is that the prepend.php file only runs once per page load.

Actual result:
--------------
prepend.php loads when the browser is seemingly requesting the URI for the 
favicon.ico


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61148&edit=1

Reply via email to