Jump to content

function_require


tobimichigan

Recommended Posts

Hi Guz,

I'm stuck @ this code running a cms..

here are the directories:

 

/.private # configuration directory

/ww.incs # CMS function libraries

/j # CMS JavaScript files

/ww.php_classes # CMS PHP class files

/ww.plugins # CMS plugins

/ww.skins # templates

 

Now the index is located outside of these..but anytime I try to launch it says:

 

 

Warning: require(C:/xampp/htdocs/.private/config.php) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\Books\cms\packt\CMS Design Using PHP and jQuery_Code\2527OS_Code\2527_01_codesamples\chapter-01\cms\ww.incs\basics.php on line 26

 

Fatal error: require() [function.require]: Failed opening required 'C:/xampp/htdocs/.private/config.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\Books\cms\packt\CMS Design Using PHP and jQuery_Code\2527OS_Code\2527_01_codesamples\chapter-01\cms\ww.incs\basics.php on line 26

 

 

<?php
session_start();
function __autoload($name) {
require $name . '.php';
}
function dbInit(){
if(isset($GLOBALS['db']))return $GLOBALS['db'];
global $DBVARS;
$db=new PDO('mysql:host='.$DBVARS['hostname'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);
$db->query('SET NAMES utf8');
$db->num_queries=0;
$GLOBALS['db']=$db;
return $db;
}
function dbQuery($query){
$db=dbInit();
$q=$db->query($query);
$db->num_queries++;
return $q;
}
function dbRow($query) {
$q = dbQuery($query);
return $q->fetch(PDO::FETCH_ASSOC);
}
define('SCRIPTBASE', $_SERVER['DOCUMENT_ROOT'] . '/');
require SCRIPTBASE . '.private/config.php';
if(!defined('CONFIG_FILE'))define('CONFIG_FILE',SCRIPTBASE.'.private/config.php');
set_include_path(SCRIPTBASE.'ww.php_classes'.PATH_SEPARATOR.get_include_path());

 

 

now if you check line 26, its

 require SCRIPTBASE . '.private/config.php';

 

I tried resolcing the scriptbase directly to the location on xampp but its still giving same error any sugs?

 

 

Link to comment
Share on other sites

sorry guz,

my mistake. Could u folks believe that I've been battling with this code all night with a lot of distractions on the net. Only to discover my error as soon as I posted this.

Here was my mistake:

define('SCRIPTBASE', $_SERVER['DOCUMENT_ROOT'] . '/');
require SCRIPTBASE . '.private/config.php';
if(!defined('CONFIG_FILE'))define('CONFIG_FILE',SCRIPTBASE.'.private/config.php');
set_include_path(SCRIPTBASE.'ww.php_classes'.PATH_SEPARATOR.get_include_path());

 

I defined

<?php define('SCRIPTBASE', $_SERVER['DOCUMENT_ROOT'] . '/');

but this did not match my exact directory, hence the error.

Its running now...but guz look its giving a new err on top of the "Hello World".

 

output:

Strict Standards: Non-static method Page::getInstanceBySpecial() should not be called statically in C:\xampp\htdocs\Books\cms\CMS Design Using PHP and jQuery_Code\2527OS_Code\2527_01_codesamples\chapter-01\cms\index.php on line 16

 

Hello World

 

here's the index code:

<?php
// { common variables and functions
include_once('ww.incs/common.php');
$page=isset($_REQUEST['page'])?$_REQUEST['page']:'';
$id=isset($_REQUEST['id'])?(int)$_REQUEST['id']:0;
// }
// { get current page id
if(!$id){
if($page){ // load by name
	$r=Page::getInstanceByName($page);
	if($r && isset($r->id))$id=$r->id;
}
if(!$id){ // else load by special
	$special=1;
	if(!$page){
		$r=Page::getInstanceBySpecial($special);
		if($r && isset($r->id))$id=$r->id;
	}
}
}
// }
// { load page data
if($id){
$PAGEDATA=(isset($r) && $r)?$r : Page::getInstance($id);
}
else{
echo '404 thing goes here';
exit;
}
// }

echo $PAGEDATA->body;

 

 

Here's line 16

<?php $r=Page::getInstanceBySpecial($special);

 

whats the solution to line 16=> $r=Page::getInstanceBySpecial($special);  ? Any ideas?

Link to comment
Share on other sites

yea guz,

sorry to have bothered u again... just saw my mistake:

 

The methods are missing the static keyword. All I did was Change

 

function getInstanceByName($name=''){

 

to

 

public static function getInstanceByName($name=''){

 

in the /ww.php_classes # CMS PHP class files that contained the Page.php file

 

<?php
class Page{
static $instances			  = array();
static $instancesByName		= array();
static $instancesBySpecial	 = array();
function __construct($v,$byField=0,$fromRow=0,$pvq=0){
	# byField: 0=ID; 1=Name; 3=special
	if (!$byField && is_numeric($v)){ // by ID
		$r=$fromRow?$fromRow:($v?dbRow("select * from pages where id=$v limit 1"):array());
	}
	else if ($byField == 1){ // by name
		$name=strtolower(str_replace('-','_',$v));
		$fname='page_by_name_'.md5($name);
		$r=dbRow("select * from pages where name like '".addslashes($name)."' limit 1");
	}
	else if ($byField == 3 && is_numeric($v)){ // by special
		$fname='page_by_special_'.$v;
		$r=dbRow("select * from pages where special&$v limit 1");
	}
	else return false;
	if(!count($r || !is_array($r)))return false;
	if(!isset($r['id']))$r['id']=0;
	if(!isset($r['type']))$r['type']=0;
	if(!isset($r['special']))$r['special']=0;
	if(!isset($r['name']))$r['name']='NO NAME SUPPLIED';
	foreach ($r as $k=>$v) $this->{$k}=$v;
	$this->urlname=$r['name'];
	$this->dbVals=$r;
	self::$instances[$this->id] =& $this;
	self::$instancesByName[preg_replace('/[^a-z0-9]/','-',strtolower($this->urlname))] =& $this;
	self::$instancesBySpecial[$this->special] =& $this;
	if(!$this->vars)$this->vars='{}';
	$this->vars=json_decode($this->vars);
}
function getInstance($id=0,$fromRow=false,$pvq=false){
	if (!is_numeric($id)) return false;
	if (!@array_key_exists($id,self::$instances)) self::$instances[$id]=new Page($id,0,$fromRow,$pvq);
	return self::$instances[$id];
}
function getInstanceByName($name=''){
	$name=strtolower($name);
	$nameIndex=preg_replace('#[^a-z0-9/]#','-',$name);
	if(@array_key_exists($nameIndex,self::$instancesByName))return self::$instancesByName[$nameIndex];
	self::$instancesByName[$nameIndex]=new Page($name,1);
	return self::$instancesByName[$nameIndex];
}
public static function getInstanceBySpecial($sp=0){
	if (!is_numeric($sp)) return false;
	if (!@array_key_exists($sp,$instancesBySpecial)) $instancesBySpecial[$sp]=new Page($sp,3);
	return $instancesBySpecial[$sp];
}
}

 

thanks for reading..hope some1 learnt something...

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.