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

From: Date: Wed, 30 Jan 2002 17:50:55 +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-78575@lists.php.net to get a copy of this message
ID: 14797
Comment by: garth@utmail.to
Old Reported By: m@rtin-burger.de
Reported By: garth@utmail.to
Status: Open
Bug Type: Scripting Engine problem
Operating System: Windows 98 SE
PHP Version: 4.1.0
New Comment:

Martin, 

Just checking that you're restarting Apache after each 
edit to PHP.ini...  You don't have to restart in CGI mode
for changes to happen, but SAPI needs it (since PHP
is loaded into Apache's memory space).

-Garth


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

[2002-01-24 17:48:44] james@stealthnet.co.uk

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...

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

[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.

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

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 (#78575) next »