PDA

View Full Version : PHP Include errors


testbot
03-01-2009, 02:10 PM
hi i wrote the following and it works fine in an iframe or whatever but if i try to use include i get the following errors.

include '/home/***/public_html/community/cforumstats.php';

[26-Feb-2009 08:33:54] PHP Parse error: syntax error, unexpected T_STRING in /home/***/public_html/community/cforumstats.php(43) : eval()'d code on line 1
[26-Feb-2009 08:34:00] PHP Parse error: syntax error, unexpected T_STRING in /home/***/public_html/community/cforumstats.php(43) : eval()'d code on line 1
[01-Mar-2009 09:58:53] PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368
[01-Mar-2009 09:59:27] PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368
[01-Mar-2009 10:02:17] PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***//public_html/community/includes/functions.php on line 1368


here's the code:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'cforumstats'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'cforumstats',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
chdir('/home/***/public_html/community');
require_once('./global.php');

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
//$navbits[$parent] = 'cforumstats';

//$navbits = construct_navbits($navbits);
//eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('cforumstats') . '");');

?>


ANY HELP WOULD BE FANTASTIC!!

--------------- Added 1235927532 at 1235927532 ---------------

darn it! why would this work when i load the page in the browser but not using include? :x

works: www.example.com/cforumstats.php

does not work: include '/path/to/cforumstats.php';

TigerC10
03-01-2009, 03:54 PM
You're changing the working directory and not changing it back to what it was... That messes up your includes big time because it doesn't automatically change back.

Do like this:

// ######################### REQUIRE BACK-END ############################
$curdir = getcwd();
chdir('/home/***/public_html/community');
require_once('./global.php');
chdir($curdir);

testbot
03-01-2009, 05:21 PM
thank you for your reply!

i think i'm one step closer now because i only get one error now...

[01-Mar-2009 13:20:13] PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368

Mr-Moo
03-01-2009, 05:47 PM
It appears that you are referencing items before having any reference sheet. Try including the global.php file first.

testbot
03-01-2009, 06:45 PM
new code below still gives this:
PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368
<?php


// ######################### REQUIRE BACK-END ############################
$curdir = getcwd();
chdir('/home/***/public_html/community');
require_once('./global.php');
chdir($curdir);

// ####################### SET PHP ENVIRONMENT ###########################

error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'cforumstats'); // change this depending on your filename


// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'cforumstats',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);


// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
//$navbits[$parent] = 'cforumstats';

//$navbits = construct_navbits($navbits);
//eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('cforumstats') . '");');
?>

Mr-Moo
03-01-2009, 07:10 PM
I would recommend you go through your code and look for any imperfections. What the code is saying that it is looking to reference something but there is a no object to look at.

I am out of ideas, I have reviewed the code and see nothing wrong. Since I do not have the other files to review and test I cannot tell you why.

Make sure all files are calling the correct directory. You may have some files calling the incorrect directories of their files.

testbot
03-01-2009, 07:35 PM
the code works otherwise it wouldn't work when it's loaded directly in the browser (http://www.example.com/cforumstats.php).

it's weird. i've been banging my head against the wall for a min.

i'm trying to think if maybe it's conflicting with some modules on the main site or something.

ps- i'm in chicago too ;)

Mr-Moo
03-01-2009, 07:36 PM
Yes, like I said, since you are including it something is not being called correctly. I will see what I can find out for you.

// Edit //

Try removing the "./" in the beginning of Global.php. Your global.php should be in the same directory as your main forum installation. You are moving a directory back to your root folder.

testbot
03-01-2009, 10:00 PM
i thought ../ was moving back a directory and ./ was the same directory.

but i'll give that a try and get back to ya. :)

Lynne
03-01-2009, 10:32 PM
I don't understand how that little php script can produce that error when nothing is even done in there. What is in your template?

testbot
03-01-2009, 10:35 PM
yea, same error.

i removed everything except the necessities and still same error.


<?php
error_reporting(E_ALL & ~E_NOTICE);

// # DEFINE IMPORTANT CONSTANTS
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'cforumstats');

// # REQUIRE BACK-END
$curdir = getcwd();
chdir('/home/***/public_html/community');
require_once('global.php');

// # START MAIN SCRIPT
$navbits = array();
eval('print_output("' . fetch_template('cforumstats') . '");');
chdir($curdir);
?>

Lynne
03-01-2009, 10:38 PM
You have removed necessary stuff. You should start off with one of these (get it working with a basic template) and add from there - How to create your own vBulletin-powered page! (uses vB templates) (https://vborg.vbsupport.ru/showthread.php?t=62164) or [How-To] vBulletin API Basics: Creating Custom Pages & Misc. (https://vborg.vbsupport.ru/showthread.php?t=98009)

testbot
03-01-2009, 11:16 PM
You have removed necessary stuff. You should start off with one of these (get it working with a basic template) and add from there - How to create your own vBulletin-powered page! (uses vB templates) (https://vborg.vbsupport.ru/showthread.php?t=62164) or [How-To] vBulletin API Basics: Creating Custom Pages & Misc. (https://vborg.vbsupport.ru/showthread.php?t=98009)

both ways work. i used that link to create it originally. you can see it in the first post.

either way, this link works http://www.ampprod.com/community/cforumstats.php

but if i do 'include /home/***/public_html/community/cforumstats.php' or add the code directly into a module on my main site it gets the following error.

PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368

Lynne
03-01-2009, 11:21 PM
That query is right after a plugin. Have you tried disabling your plugins to see if that fixes the issue?

testbot
03-01-2009, 11:56 PM
That query is right after a plugin. Have you tried disabling your plugins to see if that fixes the issue?
sorry if this is a dumb question i'm not sure what you mean. what query is right after what plugin?

Lynne
03-02-2009, 03:21 AM
The one you are getting an error on...
PHP Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368

Line 1368 of functions.php is where the problem is and this is the line:
$user = $vbulletin->db->query_first_slave("

This is just above there:
$hook_query_fields = $hook_query_joins = '';
($hook = vBulletinHook::fetch_hook('fetch_userinfo_query')) ? eval($hook) : false;

Dismounted
03-02-2009, 05:00 AM
Please post the actual PHP file you are using (and any associated templates).

testbot
03-02-2009, 05:19 AM
Template (cforumstats)

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]" style="background-image:none;padding:0px;margin:0px;background-color:none;">
<head>
<title></title>
$headinclude
</head>
<body style="background-image:none;padding:0px;margin:0px;background-color:#000000;">
<div style="width:100%;background-color:none;">
$cybtopstats
</div>
</body>
</html>


attached 'cforumstats.php'

working url: http://www.ampprod.com/community/cforumstats.php

testbot
03-03-2009, 02:12 PM
Template (cforumstats)

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]" style="background-image:none;padding:0px;margin:0px;background-color:none;">
<head>
<title></title>
$headinclude
</head>
<body style="background-image:none;padding:0px;margin:0px;background-color:#000000;">
<div style="width:100%;background-color:none;">
$cybtopstats
</div>
</body>
</html>


attached 'cforumstats.php'

working url: http://www.ampprod.com/community/cforumstats.php

nothing?

Lynne
03-03-2009, 03:02 PM
So you have a page that works fine as a standalone page. Exactly what code are you using to put it somewhere else? What hook location, what code, etc.

testbot
03-03-2009, 03:56 PM
So you have a page that works fine as a standalone page. Exactly what code are you using to put it somewhere else? What hook location, what code, etc.

if i take that page and include it in our cms like the following i get that error.

<div>
<?php include '../community/cforumstats.php'; ?>
</div>

or if i add the code directly into the page like:

<div>
<?php
error_reporting(E_ALL & ~E_NOTICE);

// # DEFINE IMPORTANT CONSTANTS
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'cforumstats');

// # REQUIRE BACK-END
$curdir = getcwd();
chdir('/home/***/public_html/community');
require_once('global.php');

// # START MAIN SCRIPT
$navbits = array();
eval('print_output("' . fetch_template('cforumstats') . '");');
chdir($curdir);
?>
</div>


for an update, i saw in the german vbulletin forum someone had the same problem but i can't read german so i don't know if it was solved or not. it looked like they were talking about cookeis.

Marco van Herwaarden
03-04-2009, 07:18 AM
You should ask at the support thread/site of your CMS.

Mr-Moo
03-04-2009, 03:51 PM
<?php include '../community/cforumstats.php'; ?>

That is your answer, you have to remove the "../". PHP does not call directories like HTML or other languages do. Remove that small snippet and put your full root path and it should work :). Or at least that is my understanding, I remember when I transferred from HTML to PHP I was baffled at why my images and whatnot were not being displayed properly. I was told it was due to the ../ not moving directories as it does with HTML.

Should look like:

<? include "/home/***/public_html/community/cforumstats.php';" ?>

testbot
03-06-2009, 01:30 AM
You should ask at the support thread/site of your CMS.

they'll tell me it's not their code causing the problem. i'll give it a try though.



<?php include '../community/cforumstats.php'; ?>

That is your answer, you have to remove the "../". PHP does not call directories like HTML or other languages do. Remove that small snippet and put your full root path and it should work :). Or at least that is my understanding, I remember when I transferred from HTML to PHP I was baffled at why my images and whatnot were not being displayed properly. I was told it was due to the ../ not moving directories as it does with HTML.

Should look like:

<? include "/home/***/public_html/community/cforumstats.php';" ?>



no luck. same error. ;)

Dismounted
03-06-2009, 03:50 AM
Which error(s) are you getting specifically? The same few on the first page?

testbot
03-06-2009, 11:36 AM
first, thanks for everyone's replies so far. some boards will just ignore you or just tell you to move on. i appreciate everyone's input so far.

i get this error:
Fatal error: Call to a member function query_first_slave() on a non-object in /home/***/public_html/community/includes/functions.php on line 1368

Dismounted
03-07-2009, 10:30 AM
That error usually occurs when vBulletin's global.php is included inside of a function.

testbot
03-07-2009, 12:25 PM
so since it's not inside a function withing my cforumstats.php file you think the cms is executing a function to include that code maybe? did that make sense?

--------------- Added 1236457601 at 1236457601 ---------------

actually, it doesn't seem to work anywhere outside the forum directory. i don't get any errors when i try outside the cms but the page just won't load. i think it might have to do with the 'Product' i'm trying to call.
$cybtopstats == Cyb - Advanced Forum Statistics (https://vborg.vbsupport.ru/showthread.php?t=201274&page=34).

not sure why the developer keeps ignoring my questions when it says in the description that what i'm trying to do can be done and that it's a supported Mod.

Dismounted
03-08-2009, 04:59 AM
Try adding this to the top of your headinclude template:
<base href="http://www.yoursite.com/forum" />

testbot
03-22-2009, 11:37 AM
i seem to have this working anywhere outside the forum directory now.

it still won't work in the only place i need it though and that's the cms.

i'm guessing the cms is forcing it to be a nested function. is there anyway to get around the nested function thing?

thanks for stickin with me on this. :)