Bug #14797 Updated: include (_path) in Apache SAPI and CGI on Win98SE does not work

From: Date: Thu, 24 Jan 2002 22:48:44 +0000
Subject: Bug #14797 Updated: include (_path) in Apache SAPI and CGI on Win98SE does not work
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-78047@lists.php.net to get a copy of this message
ID: 14797
Comment by: james@stealthnet.co.uk
Old Reported By: m@rtin-burger.de
Reported By: james@stealthnet.co.uk
Status: Open
Bug Type: Scripting Engine problem
Operating System: Windows 98 SE
PHP Version: 4.1.0
New Comment:

We're getting hit by this too. Funny how because the local dev box is
windows xp we can't use include_path for a unix main server! :(.

Anyway, I tried the idea of using C:\apache/htdocs as the DocumentRoot,
and Apache stopped reading .htaccess files completely, rendering the
workaround useless. This is a major issue for us, I'm having to scream
for a local unix dev box...


Previous Comments:
------------------------------------------------------------------------

[2002-01-17 11:11:47] mboeren@php.net

How about 

include(getenv("DRIVELETTER")."/foo/test.php");

and setting this environment variable locally (chances are it isn't set
on the real webserver).

Cheerio, Marc.

------------------------------------------------------------------------

[2002-01-17 10:56:50] m@rtin-burger.de

OK, I think I has to use this workaround:

if (strpos($SERVER_SOFTWARE, "Win")) { // Windows - Is there a better
way to detect this?
    $NB_INCLUDE_PATH_PREFIX = substr($DOCUMENT_ROOT, 0, 2); // The
drive letter - Is there a better way to detect this?
} else { // NOT Windows
    $NB_INCLUDE_PATH_PREFIX = "";
}

include ($NB_INCLUDE_PATH_PREFIX . "/foo/test.php");

But I'm not really happy...

------------------------------------------------------------------------

[2002-01-17 10:35:01] m@rtin-burger.de

Yes,  but  I  do not want to edit anything. I want to upload the files
and then it has to work.

Perhaps you can use something like this:

if (strpos($SERVER_SOFTWARE, "Win")) {
    echo "<font color=\"#FF0000\">WINDOWS</font>";
} else {
    echo "<font color=\"#008000\">Uhh, good...</font>";
}

But it's only a dirty workaround.

------------------------------------------------------------------------

[2002-01-17 10:19:11] mboeren@php.net


I use NT, but that doesn't really matter. What works for me is the
following:

If in httpd.conf, the DocumentRoot is d:/foo/htdocs, then
in php.ini, I set include_path to d:/foo/htdocs as well.

In every script that uses include, specify the relative path from
d:/foo/htdocs (never from the current file!), _without_ a leading /,
e.g. if your include file is d:/foo/htdocs/inc/bla.p, then use
include("inc/bla.p");

You could combine this with tricks like defining a constant
ABS_INCL_PATH, setting this to d:/foo/htdocs and then using
include(ABS_INCL_PATH."/inc/bla.p");

This way you can also create more constants, like
THIS_PROJECT_ABS_INCL_PATH and GENERAL_TOOLBOX_ABS_INCL_PATH.

Switching to a *nix environment is just a matter of redefining your
constants.

Hope this helps, Marc.

------------------------------------------------------------------------

[2002-01-17 10:02:58] m@rtin-burger.de

Hello,

I tried:

DocumentRoot "d:/foo/htdocs"

DocumentRoot "d:/foo/htdocs/"

DocumentRoot "d:\foo/htdocs"

DocumentRoot "d:\foo/htdocs/"

I used 'php.ini-dist' with include_path set to ".".

Nevertheless,  I can't include files with an absolute path. Statements
with a relative path work properly.

Regards,

Martin


------------------------------------------------------------------------

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
    http://bugs.php.net/?id=14797


Edit this bug report at http://bugs.php.net/?id=14797&edit=1



Thread (19 messages)

« previous php.dev (#78047) next »