tags:

views:

101

answers:

2

Here is the exact problem. I have an autoload function set up with a piece of code that looks like this:

if(file_exists($class_file))
{
 include($class_file);
 return true;
}

However, when $class_file is set to a certain value, I get an include error:

Error String: include(includes/php/utilities/calendar_event_html.utility.php)
[function.include]: failed to open stream: No such file or directory

It works fine for other files and when I step through this code with a debugger it is clear that PHP believes the file exists, but it seems that include does not. Does anyone have an idea of what is going on?

+7  A: 

From the manual:

Note: The check is done using the real UID/GID instead of the effective one.

This means that the file may exist, but it's possible that it is not accessible by the UID/GID your PHP instance is running with. I suggest you check the permissions to that file.

Best wishes,
Fabian

halfdan
I'm on Windows so I didn't think permissions would be a problem (they never have been before), but I copied this particular file using Cygwin - I wonder if it changed the permissions of the file when I did that...
Steven Oxley
Can you reproduce this behaviour on a different machine?
halfdan
I haven't tried, but I did have some similar problems with some javascript files that I copied using Cygwin.
Steven Oxley
A: 

Try adding this bit of debugging code:

echo "<pre>";
echo get_include_path();
echo "</pre>";

function.get-include-path

This will return your current include path, and you can compare it with your $class_file string.

simeonwillbanks