Mombu the Php Forum

Go Back   Mombu the Php Forum > Php > Nested include/require not working in 5.2
User Name
Password
REGISTER NOW! Mark Forums Read




Reply
1 30th October 20:33
lists
External User
 
Posts: 1
Default Nested include/require not working in 5.2



I am not able to use includes or requires in nested files using php 5.2.3
(osx)

Including or Requiring files directly works.

Including files, that also have includes in them, does not.

Say you have this...

-TopDirectory
--index.php (contains include("includes/top.php"); )
--includes (folder)
---config.php (contains echo "crap"; )
---top.php (contains include("config.php"); )

When you load the index.php file you would expect the word "crap" to show,
but it does not. I think the getcwd is staying specific to the top folder,
so the path stays the same throughout.

This does not happen in 5.1.6

Is there a fix for this or is it PHP causing the problem?


--
Mike Yrabedra B^)>
  Reply With Quote


 


2 30th October 20:33
jochem
External User
 
Posts: 1
Default Nested include/require not working in 5.2



nothing changed in php - the CWD has always been the dir in which the explicitly
called script lives in and it does not change because your inside an included file.

my guess is your include_path no longer includes '.' so php is not trying to find the file
in the directory of the script which is doing the include.
  Reply With Quote
3 30th October 20:33
lists
External User
 
Posts: 1
Default Nested include/require not working in 5.2


Here is what I have for include_path...

include_path = ".:/usr/local/pear"

Everything seems to be in order? --
Mike Yrabedra B^)>
  Reply With Quote
4 30th October 20:33
lonewolf
External User
 
Posts: 1
Default Nested include/require not working in 5.2


The first question I have is what does the Error log show?

You should have error reporting turned on so you can see where the script is barfing on the coding.

Wolf
  Reply With Quote


 


5 30th October 20:33
lists
External User
 
Posts: 1
Default Nested include/require not working in 5.2


One more thing, it only does this IF the nested include file is named
'config.php'.

No error is thrown because it is pulling the 'config.php' file from
somewhere, I just do not know where.

If I change the name of the file from 'config.php' to 'config1.php', then
everything works fine.

Is there a way to figure out where and why it is pulling this mystery
'config.php' file from? --
Mike Yrabedra B^)>
  Reply With Quote
6 30th October 20:33
lonewolf
External User
 
Posts: 1
Default Nested include/require not working in 5.2


What does the error message log tell you? It should be readily available in it....

Wolf
  Reply With Quote
7 30th October 20:33
lists
External User
 
Posts: 1
Default Nested include/require not working in 5.2


The include tag is not throwing any error.

If I call the same file with a read file method, then I get this error....

Warning: readfile(config.php) [function.readfile]: failed to open stream: No
such file or directory in....

Even though the file calling it is in the same directory as 'config.php'
--
Mike Yrabedra B^)>
  Reply With Quote
8 30th October 20:34
stuttle
External User
 
Posts: 1
Default Nested include/require not working in 5.2


Jochem was nearly right in an earlier reply. The CWD is usually set to
the directory that contains the initial script. It does not change when
you include a file. This affects include, require and file functions.

If you want to reference a file relative to the current script
regardless of what the CWD is, use dirname(__FILE__) to prefix the
script. For example...

include dirname(__FILE__).'/config.php';

There are other ways to handle this. The one I tend to use is to change
include_path to contain the root directory for your scripts. That way
you can reference all include files as relative to that directory
without worrying about where the initial script is/was.

-Stut

--
http://stut.net/
  Reply With Quote
9 30th October 20:34
lonewolf
External User
 
Posts: 1
Default Nested include/require not working in 5.2


Your include path should be along the lines of:
include_path = ".:/usr/local/pear:/server/path/to/web/includes/folder"
so if your server root is /var/htdocs/www it would look like:
include_path = ".:/var/htdocs/www/includes:/usr/local/pear"

Notice that I changed the order to look local first, then go to the includes folder.

HTH,
Wolf
  Reply With Quote
10 30th October 20:34
lists
External User
 
Posts: 1
Default Nested include/require not working in 5.2


I will give this a try, but what happened from 5.1.6 -> 5.2.3 that forces me
to do this?

All the php.ini settings are the same, but I have this problem only on
5.2.3 with files named 'config.php'. That is the really weird part. --
Mike Yrabedra B^)>
  Reply With Quote
Reply


Thread Tools
Display Modes




666