Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Class 'Cache_Container_' not found #106

Closed
Aloha68 opened this issue Jul 16, 2013 · 9 comments
Closed

Class 'Cache_Container_' not found #106

Aloha68 opened this issue Jul 16, 2013 · 9 comments
Milestone

Comments

@Aloha68
Copy link

Aloha68 commented Jul 16, 2013

Bonjour,

J'ai téléchargé aujourd'hui FreshRSS pour l'installer sur un serveur personnel. La phase d'installation s'est bien déroulée, mais une erreur m'empêche désormais d'accéder au site. J'ai bien supprimé le fichier /public/install.php.

Apache me renvoie l'erreur suivante :

PHP Warning:  Missing argument 1 for Cache::Cache(), called in /srv/http/FreshRSS/lib/minz/Dispatcher.php on line 44 and defined in /usr/share/php/Cache.php on line 129

PHP Notice:  Undefined variable: container in /usr/share/php/Cache.php on line 132

PHP Warning:  include_once(Cache/Container/.php): failed to open stream: No such file or directory in /usr/share/php/Cache.php on line 136

PHP Warning:  include_once(): Failed opening 'Cache/Container/.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear:/srv/http/FreshRSS/lib:/srv/http/FreshRSS/lib/minz:/srv/http/FreshRSS/app:/srv/http/FreshRSS/lib/phpQuery/:/srv/http/FreshRSS/lib/phpQuery/plugins/') in /usr/share/php/Cache.php on line 136

PHP Fatal error:  Class 'Cache_Container_' not found in /usr/share/php/Cache.php on line 137

Je vous prie de m'excuser pour la lecture des logs, qui n'est pas forcément aisée sur cette plateforme.

Pour information, voici la version de mes paquets :
php5 - 5.4.4.14
curl - 7.26.0-1
apache2 - 2.2.22-13
J'ai téléchargé votre application par le biais de ce dépôt GIT (version 0.4.0).

Savez-vous quelle pourrait être l'origine de ce dysfonctionnement ? Je ne sais pas d'où provient la classe Cache_Container_ qui est visiblement manquante dans mon cas.

Dans tous les cas, votre application m'a laissé une très bonne impression sur votre page de démonstration et j'ai hâte de pouvoir l'installer à domicile. ;-)

En vous remerciant à l'avance pour votre soutien,

@marienfressinaud
Copy link
Member

Bonjour,

oui c'est un problème connu qui nécessite en fait pas mal de modifications de ma part, ce qui explique que je ne m'y sois pas encore penché.
Ce que tu peux faire temporairement, c'est remplacer dans le fichier /srv/http/FreshRSS/lib/minz/Dispatcher.php, la fonction run (ligne 43 à 89) par :

public function run () {
    ob_start ('ob_gzhandler');

    while (Request::$reseted) {
        Request::$reseted = false;

        try {
            $this->createController (
                Request::controllerName ()
                . 'Controller'
            );

            $this->controller->init ();
            $this->controller->firstAction ();
            $this->launchAction (
                Request::actionName ()
                . 'Action'
            );
            $this->controller->lastAction ();

            if (!Request::$reseted) {
                ob_start ();
                $this->controller->view ()->build ();
                $text = ob_get_clean();
            }
        } catch (MinzException $e) {
            throw $e;
        }
    }

    Response::setBody ($text);
}

Je n'ai pas testé mais ça devrait fonctionner :)

@Aloha68
Copy link
Author

Aloha68 commented Jul 17, 2013

Effectivement, la modification m'a permis de faire fonctionner le site. J'ai testé rapidement ce midi : ajout de flux, configuration du site, lecture des flux, tout a l'air de fonctionner correctement. Merci beaucoup pour le support apporté.

Dans un second temps, j'ai essayé d'exécuter le script /actualize_script.php, mais une autre erreur se déclenche :( Il me rétorque que le fichier /public/data/Configuration.array.php n'existe pas. Voici une copie de l'erreur (d'ailleurs, comment faire pour l'afficher dans un cadre ? Je trouve assez crade l'affichage standard).

PHP Fatal error: Uncaught exception 'FileNotExistException' with message 'File doesn't exist : /srv/http/FreshRSS/public/data/Configuration.array.php' in /srv/http/FreshRSS/lib/minz/dao/Model_txt.php:33
Stack trace:
#0 /srv/http/FreshRSS/lib/minz/dao/Model_array.php(22): Model_txt->__construct('/srv/http/Fresh...')
#1 /srv/http/FreshRSS/app/models/RSSConfiguration.php(203): Model_array->__construct('/srv/http/Fresh...')
#2 /srv/http/FreshRSS/app/models/RSSConfiguration.php(22): RSSConfigurationDAO->__construct()
#3 /srv/http/FreshRSS/app/App_FrontController.php(43): RSSConfiguration->__construct()
#4 /srv/http/FreshRSS/app/App_FrontController.php(15): App_FrontController->loadParamsView()
#5 /srv/http/FreshRSS/actualize_script.php(26): App_FrontController->init()
#6 {main} thrown in /srv/http/FreshRSS/lib/minz/dao/Model_txt.php on line 33```

Pourtant, le fichier existe bien et appartient bien à apache (droit 644). Voici son contenu :

<?php
return array (
'language' => 'fr',
'old_entries' => '3',
'mail_login' => '',
);

En tout cas, merci pour ton aide, je vais déjà pouvoir en profiter sans le CRON d'arrière-plan ! L'application a vraiment l'air agréable à utiliser, et je te remercie pour ton partage et ton support. Bonne continuation surtout !

@marienfressinaud
Copy link
Member

Comment as-tu exécuté le script ? En ligne de commande ?

En fait, ce script ne va pas être lancé par Apache à priori donc je pense que c'est bien une histoire de droits sur le fichier. Essaye de les changer par des droits 655.

Et pour afficher le code dans un bloc, il faut l'entourer par 3 ` au début, puis à la fin. Tu as un exemple en cliquant sur le lien "GitHub Flavored Markdown" juste au dessus de la zone d'écriture des commentaires

@Aloha68
Copy link
Author

Aloha68 commented Jul 17, 2013

Oui, j'ai bien exécuté le script en ligne de commande. En relançant le script avec les permissions d'exécution pour mon utilisateur, le résultat est le même... :-(

J'ai essayé de lancer la mise à jour des flux RSS depuis le site Internet aussi, et une autre erreur apparaît dans mon fichier de log (celui d'apache, celui du site est vide mais cela s'explique par l'erreur je pense). Cette erreur apparaît une fois par flux suivi.

PHP Fatal error: Call to undefined method Log::record() in /srv/http/FreshRSS/app/models/Entry.php on line 265

En parcourant le code source, je pense que le problème survient à l'insertion des nouvelles dans la base de données. Pourtant, à l'ajout d'un flux, la première importation des articles s'exécutent sans broncher, c'est seulement lors de la mise à jour que le problème survient (en cliquant sur la petite flèche placée à gauche du marqueur d'article). Aussi, la méthode existe bien dans le fichier /lib/minz/Log.php :-(.

Bref, j'ai l'impression d'être le seul à être tomber sur des problèmes comme ceux-ci... Pas de chance de ce côté, heureusement que ton soutien, en français qui plus est, me motive à persévérer dans l'utilisation de ton application. Merci encore pour ce que tu fais ;-)

@marienfressinaud
Copy link
Member

Je note ton premier soucis dans un coin, actuellement je n'ai pas trop d'idée et pas de temps pour bosser sur FreshRSS (et ce pour encore quelques jours, voire le mois entier). Comme solution temporaire, tu peux faire une tâche CRON du type

30 * * * * wget http://ton_adresse_vers_freshRSS?c=feed&a=actualize >/dev/null 2>&1

C'est limité à l'actualisation de 10 flux, mais c'est déjà ça :)

Pour le deuxième soucis, tu n'es pas le premier à le rencontrer mais la première fois c'était par mail. Il me semble que le soucis est le même que pour la classe Cache, à savoir qu'il doit déjà exister une classe Log (ou Cache) sur ton serveur et qu'il se mélange les pinceaux. Je corrigerai le problème directement au niveau du framework... quand j'aurai le temps. Mais ne t'inquiètes pas, la classe Log n'est pas indispensable au bon fonctionnement de FreshRSS ;)

@marienfressinaud
Copy link
Member

En résumé de ce bug : 2 soucis

  1. Des classes font doublons au niveau du framework Minz, le problème est connu et il va falloir utiliser les espaces de noms (bug reporté ici : https://github.com/marienfressinaud/MINZ/issues/13)
  2. Problème lors de l'exécution du script CRON qui ne trouve pas le fichier de configuration (voire du côté des droits... mais pas qûr que ce soit ça)

marienfressinaud added a commit that referenced this issue Jul 27, 2013
Passage en Minz_Cache et Minz_Log
Permet d'éviter les redondances quand ces classes sont déjà définies
Je n'utilise pas d'espace de nom parce que beaucoup de boulot et
nécessite obligatoirement php 5.3
Si d'autres classes nécessitent cette modification je le ferai au fur et
à mesure qu'on me remontera les soucis
La version de Minz pour FreshRSS n'est plus compatible avec la version
distribuée à part
@marienfressinaud
Copy link
Member

Le problème initial est corrigé à priori

As-tu toujours ton soucis avec le script CRON ou as-tu trouvé l'origine du problème ?

@Aloha68
Copy link
Author

Aloha68 commented Jul 28, 2013

J'ai retiré les appels à la classe Log aux endroits où ils posaient problème, du coup l'actualisation via le script fonctionne à nouveau. Pour ce qui est du CRON, la ligne de commande que tu m'as donné exécute correctement son travail, si ce n'est que j'ai du entourer l'URL de guillemets. Bref, pour l'instant, tout a l'air de fonctionner ;-)

@marienfressinaud
Copy link
Member

Ok pas de soucis !

Je ferme le ticket du coup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants