Bug #73797 [Com]: __DIR__ !== getcwd()

From: Date: Thu, 26 Jan 2017 06:26:58 +0000
Subject: Bug #73797 [Com]: __DIR__ !== getcwd()
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206962@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73797&edit=1 ID: 73797 Comment by: anrdaemon at freemail dot ru Reported by: anrdaemon at freemail dot ru Summary: __DIR__ !== getcwd() Status: Feedback Type: Bug Package: Filesystem function related Operating System: Windows PHP Version: 7.1.0 Block user comment: N Private report: N New Comment: You did not set it up as described. Your tests are not valid. Previous Comments: ------------------------------------------------------------------------ [2017-01-24 10:43:53] requinix@php.net C:\Users\*>mklink /j %temp%\test.dir C:\users\Public\Desktop Junction created for C:\Users\*\AppData\Local\Temp\test.dir <<===>> C:\users\Public\Desktop C:\Users\*>cd %temp%\test.dir C:\Users\*\AppData\Local\Temp\test.dir>echo ^<^?php print __DIR__ . ^"\n^"; print getcwd() . ^"\n^"; > test.php Access is denied. C:\Users\*\AppData\Local\Temp\test.dir>*\php-7.1.0-nts-Win32-VC14-x64\php.exe -r "echo __DIR__; echo getcwd();" C:\Users\*\AppData\Local\Temp\test.dirC:\Users\*\AppData\Local\Temp\test.dir The actual output does matter. You can redact portions if you want but only as long as it doesn't change the meaning of the path. Your repro works fine for both me and @narf. *You* are the one with the unusual output so *you* must be the one who provides the exact details. ------------------------------------------------------------------------ [2017-01-24 10:34:16] anrdaemon at freemail dot ru Literal output doesn't matter. (Though, you could easily predict it.) The fact that the output differs - matters. If "your environment" provides any different results, please describe exact steps you've made to set it up. As well as exact versions of OS and PHP used. ------------------------------------------------------------------------ [2017-01-19 15:17:04] narf at devilix dot net It might be helpful if you provide the actual/literal outputs that you get, as opposed to just describing them with words. In my environment for example, all three of getcwd(), __DIR__ and realpath(__DIR__) return the same result, so it is unclear what you mean by "realpath()'d". ------------------------------------------------------------------------ [2016-12-21 04:26:39] anrdaemon at freemail dot ru Another interesting script to run in this directory: <?php print getcwd() . "\n"; chdir(getcwd()); print getcwd() . "\n"; chdir(getcwd()); print getcwd() . "\n"; chdir(getcwd()); print getcwd() . "\n"; ------------------------------------------------------------------------ [2016-12-21 03:32:23] anrdaemon at freemail dot ru Description: ------------ When running script from the current directory, you can't be sure if __DIR__ will match getcwd(), even if naive logic says they should be. Test script: --------------- mklink /J "%TEMP%\test.dir" "C:\Documents and Settings\Public\Desktop" cd "%TEMP%\test.dir" echo ^<^?php print __DIR__ . ^"\n^"; print getcwd() . ^"\n^"; > test.php C:\php\php.exe -f test.php Expected result: ---------------- I'm fully expecting equal output from both prints. Actual result: -------------- Actually, the output differs, as if __DIR__ is realpath()'d for some reason. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73797&edit=1

« previous php.bugs (#206962) next »