__autoload() werkt niet met XAMPP?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sam Clauw

Sam Clauw

18/04/2011 19:51:13
Quote Anchor link
Hallo iedereen,

ik vraag me af waarom de __autoload() functie niet werk wanneer ik mijn websites lokaal bekijk. Wanneer ik de code online zet, werkt het nochtans zoals het hoort. Volgens mij gaat het dus om een verkeerd pad waarnaar ik lokaal link. Ik vind echter geen manier om een correct pad aan te maken. Hier is mijn mappen/bestanden structuur:

index.php
includes/head.inc.php
includes/foot.inc.php
includes/right.inc.php
includes/config.inc.php
libs/class.phpmailer.php
libs/class.weather.php
libs/class.xml.parser.php
css/...
js/...
...

En hier hebben jullie de code die in m'n config file staat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
define('DOCROOT', $_SERVER['HTTP_HOST']);

function
__autoload($class){
    require_once DOCROOT . '/libs/class.' . $class . '.php';
}

?>


Dit geeft de volgende error:

Quote:
Warning: require_once(local.bellewaerdefun.be/libs/class.phpmailer.php) [function.require-once]: failed to open stream: No such file or directory in D:\Websites\xampp\htdocs\bellewaerdefun\includes\config.inc.php on line 44

Fatal error: require_once() [function.require]: Failed opening required 'local.bellewaerdefun.be/libs/class.phpmailer.php' (include_path='.;D:\Websites\xampp\php\PEAR') in D:\Websites\xampp\htdocs\bellewaerdefun\includes\config.inc.php on line 44


Hoe kan ik dus opvangen dat er niet naar "D:\Websites\xampp\php\PEAR" maar wel naar "D:\Websites\xampp\htdocs\bellewaerdefun"gelinkt wordt??? Alvast bedankt voor jullie reactie(s)!
Gewijzigd op 18/04/2011 19:53:06 door Sam Clauw
 
PHP hulp

PHP hulp

29/03/2024 13:51:46
 
- SanThe -

- SanThe -

18/04/2011 20:03:32
Quote Anchor link
Andere docroot gebruiken lijkt mij.
 
Write Down

Write Down

18/04/2011 21:07:26
Quote Anchor link
$_SERVER['DOCUMENT_ROOT'] ?
Gewijzigd op 18/04/2011 21:07:43 door Write Down
 
Jelmer -

Jelmer -

18/04/2011 21:28:50
Quote Anchor link
Of heb absolute pad aan je include_path toevoegen met set_include_path.
 
Sam Clauw

Sam Clauw

18/04/2011 22:06:30
Quote Anchor link
Gho, ingewikkelde materie als je het mij vraagt! Ik heb hier en daar wat geprobeerd met set_include_path, maar tot dus ver is er mij nog niets gelukt. Dit werkt alvast niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$path
= '/libs';
set_include_path(get_include_path() . $path);

function
__autoload($class){
    require_once 'class.' . $class . '.php';
}

?>


Het geeft mij namelijk de volgende foutmelding:

Quote:
Warning: require_once(class.weather.php) [function.require-once]: failed to open stream: No such file or directory in D:\Websites\xampp\htdocs\bellewaerdefun\includes\config.inc.php on line 45

Fatal error: require_once() [function.require]: Failed opening required 'class.weather.php' (include_path='.;D:\Websites\xampp\php\PEAR/libs') in D:\Websites\xampp\htdocs\bellewaerdefun\includes\config.inc.php on line 45


Ook het werken met $_SERVER['DOCUMENT_ROOT'] werkt niet. De __autoload() wordt in de map /includes uitgevoerd, terwijl de classes in de map /libs staat. Iemand die mij iets verder op weg kan helpen? Of is het beter om voor de makkelijke weg te kiezen: al mijn classes in de map /includes (wordt dus: /includes/libs/class.voorbeeld.php)?
 
Jelmer -

Jelmer -

18/04/2011 22:22:35
Quote Anchor link
Je moet de paden scheiden met PATH_SEPARATOR (meestal een dubbele punt of punt-komma, maar gebruik gewoon deze constante zodat je altijd de goeie hebt)

Let ook op dat een pad dat begint met / een absoluut pad is. Waarschijnlijk bedoel je ./libs ('punt' is de huidige map, de current-work-directory, en dit is dus het pad naar de map libs in de huidige map)
 
- SanThe -

- SanThe -

18/04/2011 22:23:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

function __autoload($class){
    require_once './libs/' . $class . '.php';
}

?>
?>
 
Tim S

Tim S

19/04/2011 00:13:08
Quote Anchor link
Dit zou moeten werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
define('DS', DIRECTORY_SEPARATOR);
define('DOCROOT', 'C:'.DS.'xampp'.DS.'htdocs'.DS.'site'.DS); //path is hier C:/xampp/htdocs/site/     ff aanpassen naar je eigen root

function __autoload($class){
    require_once DOCROOT. 'libs/class.' . $class . '.php';
}

?>
Gewijzigd op 19/04/2011 00:13:31 door Tim S
 
TJVB tvb

TJVB tvb

19/04/2011 09:02:26
Quote Anchor link
@Tim, waarom definieer je een constante met als inhoud een al bestaande constante?
 
Jelmer -

Jelmer -

19/04/2011 09:14:56
Quote Anchor link
Waarom gebruik je daar uberhaupt een constante wanneer je een windows-pad geeft, waar de separator altijd een backslash is.
 
Tim S

Tim S

19/04/2011 09:30:06
Quote Anchor link
TJVB tvb op 19/04/2011 09:02:26:
@Tim, waarom definieer je een constante met als inhoud een al bestaande constante?


Omdat ik die constant vaak gebruik, en DS nogal wat sneller typt als DIRECTORY_SEPARATOR en minder ruimte in beslag neemt op 1 regel. Dus fijner om te lezen (vind ik)
 
TJVB tvb

TJVB tvb

19/04/2011 09:31:38
Quote Anchor link
Tim S op 19/04/2011 09:30:06:
Omdat ik die constant vaak gebruik, en DS nogal wat sneller typt als DIRECTORY_SEPARATOR en minder ruimte in beslag neemt op 1 regel. Dus fijner om te lezen (vind ik)

En je code slechter overdraagbaar maakt omdat je een eigen constante gebruikt i.p.v. een standaard constante.
 
Sam Clauw

Sam Clauw

19/04/2011 21:47:03
Quote Anchor link
Met de bovenstaande tips ben ik toch al iets verder geraakt. Ik krijg nu wel nog enkele andere meldingen waardoor ik nog wat in het duister tast. Bij een poging tot het versturen van een e-mail krijg ik:

Quote:
Could not instantiate mail function


Bij m'n Yahoo Weather script wordt de volgende foutmelding weergegeven:

Quote:
Fatal error: Class 'weather' not found in D:\Websites\xampp\htdocs\bellewaerdefun\index.php on line 45


Wil dit nu zeggen dat de autoload nog steeds niet gelukt is? Of is er nog iets anders aan de hand? Het vreemde van het Yahoo Weather script is dat een bepaald script als gewone tekst lijkt te verschijnen:

Quote:
xml_obj = xml_parser_create(); xml_set_object($this->xml_obj,$this); xml_set_character_data_handler($this->xml_obj, 'dataHandler'); xml_set_element_handler($this->xml_obj, "startHandler", "endHandler"); } // *** ---------------------------------------------------------------- function parse($path){ if (!($fp = fopen($path, "r"))) { die("Cannot open XML data file: $path"); return false; } while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_obj, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_obj)), xml_get_current_line_number($this->xml_obj))); xml_parser_free($this->xml_obj); } } return true; } // *** ---------------------------------------------------------------- function startHandler($parser, $name, $attribs){ $_content = array('name' => $name); if(!empty($attribs)) $_content['attrs'] = $attribs; array_push($this->output, $_content); } // *** ---------------------------------------------------------------- function dataHandler($parser, $data){ if(!empty($data)) { $_output_idx = count($this->output) - 1; $this->output[$_output_idx]['content'] = $data; } } // *** ---------------------------------------------------------------- function endHandler($parser, $name).............

'k Ben hier precies aan't sukkelen!

Edit: print screen met de errorprint screen met de error
Gewijzigd op 19/04/2011 22:07:51 door Sam Clauw
 
- SanThe -

- SanThe -

19/04/2011 23:03:49
Quote Anchor link
Php openingstag vergeten?
 
Jelmer -

Jelmer -

20/04/2011 00:19:25
Quote Anchor link
Of shorttags.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.