Doc #71883 [Com]: PHP exec() over UNC path on Windows
Edit report at https://bugs.php.net/bug.php?id=71883&edit=1
ID: 71883
Comment by: melindaetinw81 at gmail dot com
Reported by: hobbes at visionfriendly dot com
Summary: PHP exec() over UNC path on Windows
Status: Verified
Type: Documentation Problem
Package: IIS related
Operating System: Windows 2012R2
PHP Version: 5.6.19
Block user comment: N
Private report: N
New Comment:
this might help.....
(https://www.myatriumhealth.us/)github.com
Previous Comments:
------------------------------------------------------------------------
[2018-04-24 13:57:57] frank at louwers dot be
Please note this is Windows related, not (only) IIS related. Happens in Windows + Apache + PHP as
well!
As a workaround, use the chdir() method. Do not try to be clever and try to avoid this issue by
moving make a "symlink" (or whatever that's called in the windows world) to the UNC.
You will then suffer from wierd 403 bugs that only pop up once every X request.
------------------------------------------------------------------------
[2017-07-25 19:47:56] kalle@php.net
Reclassified as a doc issue
------------------------------------------------------------------------
[2017-01-18 17:27:03] internero at gmail dot com
Exactly same issue here: but with PHP 5.4.24 running on IIS 7.5 with Windows Server 2008R2, inside a
load balanced server farm, using UNC paths to share PHP files to servers.
The big problem is that we cannot just chdir() to a local drive/folder because the command passed to
exec() save files. If we change chdir(), files saved just get lost (ie go to the wrong place).
I think this need to be fixed in all PHP versions with active support.
And thanks a lot for finding the the actual reason of processes not running when using UNC path.
------------------------------------------------------------------------
[2016-03-23 17:36:47] hobbes at visionfriendly dot com
Wow. Using proc_open() allowed me to successfully execute commands. This in turn allowed me to use
procmon to discover the difference between the way I was using exec() and proc_open(). Long story
short, I would call this a core bug in PHP running on Windows when the PHP scripts are on a network
share. Here are the key details:
* exec() defaults the current working directory to the path of
the PHP script, which in my case is a UNC path.
* cmd.exe does not allow you do have a UNC path as the current
working directory, and cmd.exe claims that it will revert to
the Windows folder.
* Although cmd.exe continues to execute and conhost.exe is
spawned, the original working directory still causes some
sort of problem, and the desired executable is never started.
So a simple workaround is to chdir() to a local directory before calling exec(). However, there are
a lot of WordPress plugins that rely on exec(), so in my opinion exec() should be agnostic to
whether the PHP script is running on a share.
Thank you for your help, @pajoye! What can we do to get this submitted as a bug to be fixed in the
next release?
------------------------------------------------------------------------
[2016-03-23 03:53:59] pajoye@php.net
Check what happens in proc open to see what kind of errors happen where.
If you copy it (anonymize it) on gist :)
------------------------------------------------------------------------
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
https://bugs.php.net/bug.php?id=71883
--
Edit this bug report at https://bugs.php.net/bug.php?id=71883&edit=1
Thread (3 messages)