Bug #13936 Updated: Magical Constant __FILE__ contains wrong information on included files

From: 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

« previous php.bugs (#13388) next »