php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #61148 auto_prepend_file and auto_append_file seemingly load on favicon request
Submitted: 2012-02-20 19:55 UTC Modified: 2012-02-20 21:52 UTC
From: khaos337 at gmail dot com Assigned:
Status: Not a bug Package: *General Issues
PHP Version: 5.3.10 OS: FreeBSD7.3 (amd64)
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: khaos337 at gmail dot com
New email:
PHP Version: OS:

 

 [2012-02-20 19:55 UTC] 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

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-02-20 20:23 UTC] khaos337 at gmail dot com
I was able to confirm the issue occurs across all browsers including firefox
 [2012-02-20 20:26 UTC] rasmus@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:26 UTC] rasmus@php.net
-Status: Open +Status: Feedback
 [2012-02-20 20:30 UTC] khaos337 at gmail dot com
-Status: Feedback +Status: Open
 [2012-02-20 20:30 UTC] 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:34 UTC] rasmus@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:34 UTC] rasmus@php.net
-Status: Open +Status: Not a bug
 [2012-02-20 20:39 UTC] khaos337 at gmail dot com
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/'?
 [2012-02-20 20:44 UTC] rasmus@php.net
Because that wan't the requested uri? Depends on how you are doing the 404 
redirect, I guess.
 [2012-02-20 21:52 UTC] khaos337 at gmail dot com
redirect is done through htaccess

ErrorDocument 404 /error404/
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue Jul 15 07:01:31 2025 UTC