merged branch stloyd/bugfix/process_cwd (PR #6620)
This PR was merged into the 2.0 branch.
Commits
-------
880da01
[Process] In edge cases `getcwd()` can return `false`, then `proc_open()` should get `null` to use default value (the working dir of the current PHP process)
Discussion
----------
[2.0][Process] In edge cases `getcwd()` can return `false`
Bug fix: yes
Feature addition: no
BC break: no
Symfony2 tests pass: yes
In edge cases `getcwd()` can return `false`, then `proc_open()` should get `null` to use default value (the working dir of the current PHP process).
---------------------------------------------------------------------------
by stloyd at 2013-01-08T12:43:40Z
I guess that this could be related to #6496, as error code `267` at Windows means:
[`ERROR_DIRECTORY - The directory name is invalid.`](http://msdn.microsoft.com/en-us/library/ms681382%28v=vs.85%29.aspx#error_directory)
---------------------------------------------------------------------------
by Seldaek at 2013-01-08T12:57:38Z
If null already uses the current working directory, what's the point of calling getcwd() at all?
---------------------------------------------------------------------------
by stloyd at 2013-01-08T13:03:06Z
@Seldaek TBH. I don't have idea =) It seems that it's there _from the beginning_, but yeah, I was a bit confused by usage of it too...
---------------------------------------------------------------------------
by fabpot at 2013-01-09T08:13:24Z
What about removing the code altogether?
---------------------------------------------------------------------------
by stloyd at 2013-01-09T08:22:55Z
@fabpot I'm ok with that, just not sure it will not be an BC break...
---------------------------------------------------------------------------
by Seldaek at 2013-01-09T08:24:57Z
php.net says `or NULL if you want to use the default value (the working
dir of the current PHP process)` which sounds like getcwd() to me.
---------------------------------------------------------------------------
by Seldaek at 2013-01-09T08:26:32Z
For full BC though, `getWorkingDirectory` should `return $this->cwd ?:
getcwd();` Then at least if that call fails the whole process isn't
failing. I don't see why anyone would use that getter though.
---------------------------------------------------------------------------
by stloyd at 2013-01-10T12:43:59Z
@fabpot @Seldaek What do you think about this now?
---------------------------------------------------------------------------
by Seldaek at 2013-01-10T12:58:39Z
👍
This commit is contained in:
commit
f9ed2bc3c7
@ -53,7 +53,7 @@ class Process
|
||||
}
|
||||
|
||||
$this->commandline = $commandline;
|
||||
$this->cwd = null === $cwd ? getcwd() : $cwd;
|
||||
$this->cwd = $cwd;
|
||||
if (null !== $env) {
|
||||
$this->env = array();
|
||||
foreach ($env as $key => $value) {
|
||||
@ -359,6 +359,13 @@ class Process
|
||||
*/
|
||||
public function getWorkingDirectory()
|
||||
{
|
||||
// This is for BC only
|
||||
if (null === $this->cwd) {
|
||||
// getcwd() will return false if any one of the parent directories does not have
|
||||
// the readable or search mode set, even if the current directory does
|
||||
return getcwd() ?: null;
|
||||
}
|
||||
|
||||
return $this->cwd;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user