[ZENDFRAMEWORK] Fatal error in Zend_Db_Table_Abstract

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nika
  • Registratie: Oktober 2003
  • Niet online
Hallo allemaal,

ik ben betrekkelijk nieuw met het Zend Framework dus wellicht doe ik iets helemaal verkeerd, maar ik loop tegen het volgende aan.

Ik gebruik de Zend_Session_SaveHandler_DbTable class (uit de incubator van ZF) om sessie gegevens op te slaan in een MySQL tabel. Het gebruik van de class levert echter een Fatal Error op op een (vreemde) plek. De foutmelding is als volgt.

Warning: Zend_Db_Table_Abstract::require_once(Zend/Db/Table/Select.php) [function.Zend-Db-Table-Abstract-require-once]: failed to open stream: No such file or directory in X:\htdocs\library\Zend\Db\Table\Abstract.php on line 773

Fatal error: Zend_Db_Table_Abstract::require_once() [function.require]: Failed opening required 'Zend/Db/Table/Select.php' (include_path='.;C:\php5\pear;../library/') in X:\htdocs\library\Zend\Db\Table\Abstract.php on line 773


Voor de rest lijkt het framework prima te werken. Select.php staat natuurlijk gewoon waar de file zou moeten staan...

In mijn bootstrap.php file heb ik

code:
1
2
3
4
5
6
7
8
9
10
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '../library/');
.
.
.
$db = Zend_Db::factory($config->db->connection, $config->db->toArray());
Zend_Db_Table::setDefaultAdapter($db);

// Set session defaults
Zend_Session::setOptions($config->session->toArray());
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config->sessionhandler->toArray()));


Is dit probleem bij een van jullie bekend?

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Probeer dit eens:
code:
1
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '..\\library\\');

in plaats van dit:
code:
1
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '../library/');

Acties:
  • 0 Henk 'm!

  • nika
  • Registratie: Oktober 2003
  • Niet online
Zal ik vanavond eens proberen. Wat is overigens het verschil?

Misschien nog wat aanvullende informatie.

Als ik een class aanmaak, bijvoorbeeld

code:
1
2
3
4
class Article extends Zend_Db_Table_Abstract
{
   protected $_name = 'articles';
}


wordt dezelfde code line in Zend/Db/Table/Abstract.php aangeroepen, maar dan zonder enig probleem.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Dat ligt er ook maar net aan in welk bestand je bovenstaande plaatst.

Als je in je map 'library/' zit zal het prima werken, dan klopt het pad immers.
Als je het in je root doet, of in een ander pad, dan kan hij Select.php niet includen want er is een relatief pad gebruikt.

De code van Slagroom vult de include_path cvar aan met je library-pad. Het include_pad wordt door PHP gebruikt om te zoeken naar ge-include bestanden.

Acties:
  • 0 Henk 'm!

  • nika
  • Registratie: Oktober 2003
  • Niet online
frickY schreef op donderdag 29 mei 2008 @ 09:19:
Dat ligt er ook maar net aan in welk bestand je bovenstaande plaatst.

Als je in je map 'library/' zit zal het prima werken, dan klopt het pad immers.
Als je het in je root doet, of in een ander pad, dan kan hij Select.php niet includen want er is een relatief pad gebruikt.

De code van Slagroom vult de include_path cvar aan met je library-pad. Het include_pad wordt door PHP gebruikt om te zoeken naar ge-include bestanden.
Ik had mijn Library path dus al in de include_path staan zie start post. Ik vraag me dus af wat het verschil is tussen Slagroom's include en mijn variant.

Verder werkt het Zend Framework als een trein en heb ik nergens include issues.

De Zend_Session_SaveHandler_DbTable class wordt ingeinstantieerd in de bootstrap.php file die in de application directory staat. De Article class natuurlijk vanuit de application/models directory.

Wellicht voor de volledigheid de directory structuur, die redelijk standaard is overigens.

root
\application
\controllers
\models
article.php
\views
\config
bootstrap.php
\library
\Zend (met daaronder de hele library, alleen session handler ter illustratie volledig)
\Session
\SaveHandler
DbTable.php
\public

Het probleem heeft dus volgens mij niet direct te maken met het "niet kunnen vinden van het bestand".

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Het verschil met de jouwe zijn de slashes. Als ik je foutmelding zie lijk je op een windows-machine te werken. Daar werk je met back-slashes en wel op deze manier \\
Pagina: 1