2 Stimmen

Zend translate versucht '.php' einzubinden und verursacht einen fatalen Fehler

Ich erhalte einen seltsamen fatalen Fehler mit dem Zend-Framework, wenn ich versuche, die Translate-Klasse zu verwenden. Es scheint zu versuchen, einen leeren Dateinamen (.php) zu laden, was zu einem fatalen Fehler führt.

Nachfolgend finden Sie die Stapelverfolgung

[error] [client 79.160.197.135] PHP Warning:  include_once() [<a href='function.include'>function.include</a>]: Failed opening '.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /usr/share/php/Zend/Loader.php on line 146, referer: index.php
[error] [client 79.160.197.135] PHP Stack trace:, referer: index.php
[error] [client 79.160.197.135] PHP   1. {main}() /doc/index.php:0, referer: index.php
[error] [client 79.160.197.135] PHP   2. Zend_Translate->__construct() /doc/index.php:19, referer: index.php
[error] [client 79.160.197.135] PHP   3. Zend_Translate->setAdapter() /usr/share/php/Zend/Translate.php:89, referer: index.php
[error] [client 79.160.197.135] PHP   4. Zend_Loader::loadClass() /usr/share/php/Zend/Translate.php:127, referer: index.php
[error] [client 79.160.197.135] PHP   5. Zend_Loader::loadFile() /usr/share/php/Zend/Loader.php:94, referer: index.php
[error] [client 79.160.197.135] PHP Fatal error:  Uncaught exception 'Zend_Exception' with message 'File ".php" does not exist or class "" was not found in the file' in /usr/share/php/Zend/Loader.php:99

Und als Referenz ist die Art und Weise, wie ich die zend translate-Klasse aufrufe, wie folgt

<?php

    require_once( 'Zend/Loader.php' );

    Zend_Loader::loadClass( 'Zend_Translate' );

    $translate = new Zend_Translate(
        array(
            'gettext',
            'locale',
            null,
            array('scan' => Zend_Translate::LOCALE_DIRECTORY)
        )
    );
?>

der $translate-Abschnitt ist derjenige, der die Klasse aufruft, die den Absturz verursacht.

2voto

Clorith Punkte 459

Es stellte sich heraus, dass die Dokumentation auf der Zend-Website entweder zu neu oder zu alt für das Zend-Framework ist, das in Aptitude auf Debian enthalten ist.

Zend_Translate sollte nicht mit einem einzelnen Array aufgerufen werden, sondern mit individuellen Elementen wie folgt:

$translate = new Zend_Translate( 'gettext', 'path/to/locale.mo', 'locale' );

0voto

drew010 Punkte 66884

Je nachdem, welche ZF-Version Sie verwenden, benutzen Sie den alten (veralteten) Autoloader.

Sie könnten es auch versuchen:

require_once( 'Zend/Loader/Autoloader.php' );

Zend_Loader_Autoloader::getInstance();

Wenn Sie den Autoloader zum ersten Mal laden, indem Sie getInstance() wird ZF den Autoloader automatisch registrieren. Es löst nicht Ihr Problem gedacht, sondern ist nur ein Vorschlag.

Wenn Sie eine neue Zend_Translate Objekt können Sie ein Array für die Konfiguration übergeben, aber Sie müssen Schlüssel => Wertepaare verwenden, wenn Sie die Optionen angeben.

$translate = new Zend_Translate(
        array(
                'adapter' => 'gettext',
                'content' => 'path/to/locale.mo',
                'locale'  => 'en_US',
                'scan'    => Zend_Translate::LOCALE_DIRECTORY
        )
);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X