November 16th, 2004, 09:34 AM
php5 calling class problem
I have a strange problem. I use several classes like user.inc, db.inc etc. For security reasons I've changed the names to user.php, db.php etc. Problem is, that now the script doesn't work a I only get this message: Fatal error: Class 'User' not found in /var/www/htdocs/pracovni/SVV/svv.php on line 4
All files all correctly required. But it seems like no class is defined... Any ideas?
November 16th, 2004, 01:12 PM
A couple of possibilities immediately spring to mind:
- Your require()s are done in the wrong order, so one of your included/required scripts tries to instantiate a User class object before the definition exists.
- You have multiple requires that re-define the "User" class, and could break things. For this, look at using require_once instead of require.
Without seeing relevant parts to your code, I doubt anyone is going to be able to reliably troubleshoot it, so you're on your own there if you want to keep the code to yourself.
You can troubleshoot it step by step by printing out the errors and exiting out of the script using:
You might have a line like:
if (! class_exists('User')) die ("User class could not be found.");
// Then try to instantiate the class
$userObj = new User();
The Nelson-Shepherd cutoff: The point at which you realise someone is an idiot while trying to help them.
\"Well as far as the spelling, I speak fluently both your native languages. Do you even can try spell mine ?\" -- Failed Insult
Is your whole family retarded, or did they just catch it from you?
November 16th, 2004, 08:50 PM
Thank you for your answer.
I think I can be almost 100% sure, that my requires are done in right order. Because if required files has extension .inc everything works fine. But when I change this extension to .php I get error message. Also the code should be ok, because everything worked ok before changing to .php extension.
Right now I also found this - i tried to add
AddType application/x-httpd-php .inc to my mod_php.conf
so I can leave my classess with .inc and noone can read them as text files. After done so, I get the error message also for .inc files. Strange, isn't it?)
last info: - if I copy my classes directly into main php code, everything works fine...
editProblem solved. I don't know why, but it looks like the problem was in the absolute path.
If I use require_once "http://xxxx.xxx.xxx/SVV/class/databaze.inc" everything works.
If I use require_once "http://xxxx.xxx.xxx/SVV/class/databaze.php" problem occures.
If I use require_once "./class/databaze.php" everything works fine.
If this makes sence I don't want to be sober)
November 16th, 2004, 10:22 PM
Just a very stupid guess, but I had to work hard the last few days, so nothing else
might pop out of my head
Might it be possible that if you require http://xxxx.xxx.xxx/SVV/class/databaze.php,
php actually processes databaze.php before sending its content to the your php-script,
that does the "require"ment?
Which means, that it might end up empty, so no class actually is declared and defined
which you can instantiate, hence an error occurs?
...while using the "local" file, no php-processing is applied ?
If the only tool you have is a hammer, you tend to see every problem as a nail.
(Abraham Maslow, Psychologist, 1908-70)
November 16th, 2004, 10:54 PM
sec_ware - Yes you are absolutly right and I'm a complete idiot. That was a huge mistake to call class with http. Sorry guys for bothering you, but I have always the biggest problems with these kind of things...