Bug #73797 [Com]: __DIR__ !== getcwd()
| From: | anrdaemon at freemail dot ru | 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