Bug #13936 Updated: Magical Constant __FILE__ contains wrong information on included files
| From: | derick@php.net | Date: | Sun, 07 Jul 2002 16:43:10 +0000 |
| Subject: | Bug #13936 Updated: Magical Constant __FILE__ contains wrong information on included files | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-13388@lists.php.net to get a copy of this message | ||
ID: 13936
Updated by: derick@php.net
Reported By: jpm@phpbrasil.com
-Status: Open
+Status: Verified
Bug Type: Variables related
Operating System: Solaris
PHP Version: 4.0.6
Previous Comments:
------------------------------------------------------------------------
[2002-05-12 14:19:16] kumar@chicagomodular.com
this bug is also happening with OS: Open BSD 3.0, PHP 4.2.0
the following was generated on maintenenance-priority.php
(the other __FILE__ prints were generated from the included
files):
__FILE__:
/home2/kumar/www/chicagomodular.com/phpAdsNew/
admin/maintenance-priority.php
__FILE__: /config.php
__FILE__: /lib-maintenance.inc.php
for the phpAdsNew application this is a serious bug since
__FILE__ is used to define an include-path constant
------------------------------------------------------------------------
[2002-02-27 13:42:37] jpm@phpbrasil.com
Re-opening since this bug appear to be still going on. I didn't really
test the fixes on 4.1.1 since I'm using a similar routine to report
errors, but it would be nice to catch some attention.
--Joao
------------------------------------------------------------------------
[2002-02-27 12:40:44] jas@cs.yorku.ca
I was having problems with this same thing on Solaris under PHP 4.1.1,
so I tried the 4.2 version, and it seems to me that the problem is
still there.
I create a file called "test.php" containing:
<?php
echo "file " . __FILE__;
?>
When I:
php test.php
I get:
file test.php
I expect to get:
file /cs/home/jas/test.php
Shouldn't __FILE__ always return a full path to a file?
Jason.
------------------------------------------------------------------------
[2001-11-05 17:24:49] jeroen@php.net
Yeah, ok, but that was far from apparent in your original report. So
you mean that the bug is that not the full path is given?
I agree, that's a bug. __FILE__ should give the full path of the script
in which the __FILE__ is.
I reproduce it with 4.0.6, but it apparently is fixed in 4.2.0, since
with the exact same env and script etc I get the correct result now.
So closing.
--Jeroen
------------------------------------------------------------------------
[2001-11-05 17:05:30] jpm@php.net
Another good argument in favor of __FILE__ returning the full path is
the actual purpose of this variable. People usually use __FILE__ and
__LINE__ to develop routines to report problems or even events on their
applications.
As the manual says, one could write something like this:
<?php
function report_error($file, $line, $message)
{
echo "An error occured in $file on line $line: $message.";
}
report_error(__FILE__, __LINE__, "Something went wrong!");
?>
To get a report of eventual errors on some library file. Can you tell
me how would I know _which_ library file or script the error occurred
without __FILE__ returning me the full path of the offending script ?
We could have several 'index.php' files running this 'report_error'
function, and if __FILE__ returns only 'index.php', then we wouldn't
know exactly which file it is.
Anyway, I think it is pretty clear __FILE__ should return the full
path.
--Joao
------------------------------------------------------------------------
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
http://bugs.php.net/13936
--
Edit this bug report at http://bugs.php.net/?id=13936&edit=1