Re: PHP C++ extension on Windows: setting the working directory the same as PHP
| From: | Johannes Schlüter | Date: | Wed, 02 Apr 2014 13:25:37 +0000 |
| Subject: | Re: PHP C++ extension on Windows: setting the working directory the same as PHP | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-73518@lists.php.net to get a copy of this message | ||
On Wed, 2014-04-02 at 14:14 +0100, O'Neil Delpratt wrote:
> Hi,
>
> I am having trouble getting the correct working directory in the C/C++
> code of my PHP extension. It should be the same as the PHP working
> directory, but it is not.
[...]
> In linux the C function getcwd() does as expected. It is the same as
> the PHP cwd, but on windows it always uses the “C:\Program Files
> \Apache software Foundation\Apache2.2”,
> whereas in my php script the call ‘echo getcwd();’ returns “C:\www
> \html” as expected.
when using Apache on Windows you are using mod_mpm which is a threaded
environment. Thus there is one process which might serve multiple
requests in different threads. Each thread needs (from user perspective)
its own working directory, thus our thread isolation library, TSRM,
provides an API for that: VCWD_GETCWD. Please see
TSRM/tsrm_virtual_cwd.h for more related APIs. Mind: In 5.6 this has
been moved to Zend/zend_virtual_cwd.h
johannes