ID: 13936 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Closed +Status: Open Bug Type: Variables related Operating System: Solaris PHP Version: 4.0.6 New Comment:
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 Previous Comments: ------------------------------------------------------------------------ [2002-02-27 12:40:44] [EMAIL PROTECTED] 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] [EMAIL PROTECTED] 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] [EMAIL PROTECTED] 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 ------------------------------------------------------------------------ [2001-11-05 16:58:46] [EMAIL PROTECTED] Well, I expect PHP to give me the full path of the script (/usr/home/jpm/boohoo/test.php for instance) and not just 'test.php'. What would be the purpose of __FILE__ if the full path was not returned ? We already have $PHP_SELF / $SCRIPT_NAME for the real name of the script. Don't you think it is a bit strange that your own test gave you '../test.php' on the original script and then the full path for the included one ? To go down to the real problem - I need a portable way to find the real location of the script on the server, being the server Apache, IIS, PWS or whatever you want to use. Using __FILE__ until now was the only way to get what I want, and now this problems is cropping up on me. One more time, if __FILE__ is meant to be the way it is now (as you said, we probably have a misconception of what __FILE__ should return), then I need some other way to get the full path for a script in a portable way. I'm putting this bug as open again so someone with a real answer can update this (no more 'probably' please ;) --Joao ------------------------------------------------------------------------ [2001-11-05 16:10:20] [EMAIL PROTECTED] You say that it doesn't work correctly, but what did you expect then, and what did PHP return? I expect: (see the manual) orig file: test.php included file: test2.php anothyer try: test2.php And indeed: [jjawolff@abeel]/tmp/php/php-4.0.6> uname -a SunOS abeel.students.cs.uu.nl 5.6 Generic_105181-26 sun4u sparc SUNW,Ultra-5_10 [jjawolff@abeel]/tmp/php/php-4.0.6> ./php ../test.php X-Powered-By: PHP/4.0.6 Content-type: text/html original file is: ../test.php<br>included file is: /tmp/php/test2.php<br>another try: /tmp/php/test2.php[jjawolff@abeel]/tmp/php/php-4.0.6> So this probably not a bug, but a misunderstanding of __FILE__ (note: __FILE__ being '../test.php' is not what i'd expect, I expected an absolute path name) ------------------------------------------------------------------------ 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