FreshRSS install failed requirements - Cron - Synology

Created on 28 Mar 2018  Â·  28Comments  Â·  Source: FreshRSS/FreshRSS

Bonjour,

Je rencontre des porblèmes pour actualiser les flux via Cron. Le message d'erreur est le le suivant :

Starting feed actualization at 2018-03-28T17:20:02+02:00
FreshRSS install failed requirements:
• pdo-mysql
• fileinfo
• http_referer
• ok

Results:  

Ma configuration est la suivante :
Nas synology avec Webstation
PHP 7.0.24 ou 5.6, le résultat est identique
Moteur php Nginx ou Apache Http server 2.4, le résultat est identique à la ligne http_referer près.
Tache : php /volume1/web/rss/app/actualize_script.php > /volume1/web/FreshRSS.log 2>&1

J'ai lu plusieurs messages qui parlent des failed requirements et un qui ressemble à mon problème mais sans trouver de réponse :
https://github.com/FreshRSS/FreshRSS/issues/1748
Il ne semble pas possible par exemple d'exécuter un autre php autre que /usr/bin/php

Quand je vérifie l'installation (via l'interface web), tout est ok. A priori, idem du côté des autorisations.

J'ai aussi essayé d'exécuter la tâche cron avec curl au lieu de php en fournissant l'adresse http://monsite/rss/app/actualize_script.php mais sans vraiment de succés (j'ai vu ça sur un site pour owncloud de mémoire alors j'ai essayé un peu au hasard...)
```
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 70 0 70 0 0 1209 0 --:--:-- --:--:-- --:--:-- 1228
FreshRSS error: This PHP script may only be invoked from command line!

```

Bref, si quelqu'un avait une idée ou une piste de recherche, ca serait super ! C'est le dernier point bloquant avant de l'adopter définitivement.

(Pour info, avant j'utilisais Leed et la tâche cron fonctionnait)

Merci d'avance
Vincent

Documentation

All 28 comments

Je suis en déplacement, donc message court, mais regarderez dans nos
anciens tickets résolus concernant Synology. Plusieurs utilisateurs ont eu
des problèmes similaires car il y a plusieurs versions de PHP installées en
parallèle, et pas toutes avec la même configuration (extensions). Il
suffirait de donner le bon chemin de l'exécutable PHP.

Le mer. 28 mars 2018 à 17:24, Bedeau69 notifications@github.com a écrit :

Bonjour,

Je rencontre des porblèmes pour actualiser les flux via Cron. Le message
d'erreur est le le suivant :

Starting feed actualization at 2018-03-28T17:20:02+02:00
FreshRSS install failed requirements:
• pdo-mysql
• fileinfo
• http_referer
• ok

Results:

Ma configuration est la suivante :
Nas synology avec Webstation
PHP 7.0.24 ou 5.6, le résultat est identique
Moteur php Nginx ou Apache Http server 2.4, le résultat est identique à la
ligne http_referer près.
Tache : php /volume1/web/rss/app/actualize_script.php >
/volume1/web/FreshRSS.log 2>&1

J'ai lu plusieurs messages qui parlent des failed requirements et un qui
ressemble à mon problème mais sans trouver de réponse :

1748 https://github.com/FreshRSS/FreshRSS/issues/1748

Il ne semble pas possible par exemple d'exécuter un autre php autre que
/usr/bin/php

Quand je vérifie l'installation (via l'interface web), tout est ok. A
priori, idem du côté des autorisations.

J'ai aussi essayé d'exécuter la tâche cron avec curl au lieu de php en
fournissant l'adresse http://monsite/rss/app/actualize_script.php mais
sans vraiment de succés (j'ai vu ça sur un site pour owncloud de mémoire
alors j'ai essayé un peu au hasard...)

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 70 0 70 0 0 1209 0 --:--:-- --:--:-- --:--:-- 1228
FreshRSS error: This PHP script may only be invoked from command line!

Bref, si quelqu'un avait une idée ou une piste de recherche, ca serait
super ! C'est le dernier point bloquant avant de l'adopter définitivement.

(Pour info, avant j'utilisais Leed et la tâche cron fonctionnait)

Merci d'avance
Vincent

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/FreshRSS/FreshRSS/issues/1853, or mute the thread
https://github.com/notifications/unsubscribe-auth/AA9ixMDDjKZlnQ1kcNirarNKxw2XAXcoks5ti6spgaJpZM4S-23_
.

Bonsoir,

La solution donnée ici https://github.com/FreshRSS/FreshRSS/issues/1126 fonctionne en mettant php56 pour la commande.

Le truc c'est qu'il faut de la patience pour que le script se lance automatique en root. Si on force l'exécution de la tâche planifiée, c'est avec les droits de l'utilisateur connectée qu'elle est exécutée et donc ça ne fonctionne plus.

Si ça peut servir à d'autre...

(Je débute sur Github, je ne sais pas comment fermer le sujet)
Merci
;-)))

Bonjour, j'ai pu appliquer la même astuce sur mon NAS en utilisant php74 plutôt que php dans la command, lorsque j'exécute la ligne à la main, ca marche, par contre dans le Task Scheduler, ca fini toujours avec ceci :
FreshRSS starting feeds actualization at 2021-01-29T11:31:28+01:00
Results:
Comme s'il ne se passait rien. Une idée ? Merci !

@sgrienen Quelle est votre commande de cron plus précisément ? Regardez à la fois la sortie texte du cron et dans syslog

Essayez d'éditer la ligne suivante dans votre ./data/config.php pour avoir plus de logs :

'environment' => 'development',

@Alkarex php74 -f /volume1/web/FreshRSS/app/actualize_script.php

Dans la sortie texte du cron (Task Scheduler sur le Synology) je vois ca :

FreshRSS starting feeds actualization at 2021-02-01T08:34:21+01:00
Results:

Puis rien d'autre. J'ai choisi de l'executer en root, si je l'execute en tant que l'utilisateur habituel, ca donne ca :

FreshRSS starting feeds actualization at 2021-02-01T09:19:58+01:00
FreshRSS install failed requirements:
• data
• cache
• users
• favicons
• ok

Results:

Est-ce qu'il y a un autre log que je peux remonter ? On m'a conseillé par ailleurs d'utiliser plutôt une instruction CURL sur l'URL :

curl 'http://localhost/FreshRSS/p/i/?c=feed&a=actualize&token=update' >/dev/null 2>&1

Lequel est mieux ? Merci !

@sgrienen Avez-vous essayé d'ajouter le mode développement ?

Essayez de lancer Ă  la main votre php74 -f /volume1/web/FreshRSS/app/actualize_script.php , si possible avec le mĂŞme utilisateur que celui de votre serveur Web.

J'ai changé ce paramètre, mais je ne vois pas où c'est censé rajouter du log au juste ?

J'ai modifié quelques permission sur le repertoire ("chown -R root:http ." j'ai bon avec ca ? Pas sur de moi). Du coup j'ai lancé à la main (en root, en http je vois pas trop comment procéder sur Synology), et ca avait l'air de marcher :

/volume1/web/FreshRSS# php74 -f /volume1/web/FreshRSS/app/actualize_script.php
FreshRSS starting feeds actualization at 2021-02-01T11:30:54+01:00
FreshRSS actualize sgrienen...
PHP Notice: A feed could not be found at http://www.piratesourcil.com/feeds/posts/default?alt=rss; the status code is 200 and content-type is text/html; charset=UTF-8 in /volume1/web/FreshRSS/lib/SimplePie/SimplePie.php on line 1752
...
PHP Notice: A feed could not be found at http://blogs.adobe.com/labs/index.xml; the status code is 200 and content-type is text/html; charset=UTF-8 in /volume1/web/FreshRSS/lib/SimplePie/SimplePie.php on line 1752
FreshRSS actualization done for 1 users, using 17.69 MiB of memory, in 0 day(s), 0 hour(s), 4 minute(s) and 15 seconds.
Results:
sgrienen OK
End.

J'ai zappé un bout, y a trop de flux mort, il faut aussi que je fasse un gros ménage.

Oui, ça semble bon

Mais le cron a pas l'air de faire grand chose, ou j'essaye trop fréquemment ?
Dans le Task Scheduler, je peux executer le job manuellement aussi avec 1 bouton "Run" et lorsque je regarde l'output, je ne vois que ca :

FreshRSS starting feeds actualization at 2021-02-01T11:46:03+01:00
Results:

?

Essayez de rediriger la sortie du cron, comme dans la documentation https://freshrss.github.io/FreshRSS/en/admins/08_FeedUpdates.html

Et ensuite regarder ce fichier de sortie.

Exécuté trop fréquemment, le cron ne fera rien, mais il devrait au moins indiquer que c'est fini sans erreur

tail -f /volume1/temp/FreshRSS.log
FreshRSS starting feeds actualization at 2021-01-29T07:56:07+01:00
Results:
tail: /volume1/temp/FreshRSS.log: file truncated
FreshRSS starting feeds actualization at 2021-02-01T11:59:27+01:00
Results:
tail: /volume1/temp/FreshRSS.log: file truncated
FreshRSS starting feeds actualization at 2021-02-01T12:07:18+01:00
Results:

Je suppose qu'il manque le :

sgrienen OK
End.

A la fin pour dire que c'est bon non ?

Effectivement. Pourriez-vous essayer avec la version de développement actuelle (1.17.1-dev)?
C'est-Ă -dire la branche master en utilisant git, ou alors https://github.com/FreshRSS/FreshRSS/archive/master.zip

Je crois que j'y suis déjà : Your current version of FreshRSS is 1.17.1-dev.

Nous avons une autre méthode pour mettre à jour un utilisateur, grâce à notre interface en ligne de commandes https://github.com/FreshRSS/FreshRSS/blob/master/cli/README.md

./cli/actualize-user.php --user sgrienen

Est-ce que vous pourriez essayer ?

/volume1/web/FreshRSS# ./cli/actualize-user.php --user sgrienen
FreshRSS actualizing user “sgrienen”…
PHP Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in /volume1/web/FreshRSS/lib/Minz/ModelPdo.php on line 41

Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in /volume1/web/FreshRSS/lib/Minz/ModelPdo.php on line 41

@sgrienen Voilà enfin une erreur. Utilisez-vous MySQL comme base de données ? Je pense que la version de PHP appelée par votre cron n'a pas les extensions requises, comme pdo-mysql. Comme écrit plus haut, Synology a plusieurs versions de PHP, pas toutes avec les mêmes réglages

@Alkarex j'ai un profile défini dans le serveur web du Synology, avec php 7.4, et je peux y définir quels extensions j'active ou pas. J'en avais toute une tripotée, j'en ai encore rajouté par rapport à ce que j'ai lu ici https://github.com/FreshRSS/FreshRSS/issues/2408 je me demande juste si ca fonctionne correctement... La GUI me permet pas bien de montrer ce que j'ai coché, mais je vais les lister rapidement :

  • bz2
  • curl
  • gmp
  • iconv
  • intl
  • pdo_mysql
  • pdo_pgsql
  • pdo_sqlite
  • zip
  • zlib

C'est ce que j'ai trouvé en commun, il en manque peut-être... ?

Une bonne source maintenue à jour pour voir les extensions nécessaires est :

Pour du Debian / Ubuntu :

https://github.com/FreshRSS/FreshRSS/blob/1ee1fcce91d64c8cee6b8621aaedbdeae0c9c330/Docker/Dockerfile#L11-L12

Pour du Alpine :

https://github.com/FreshRSS/FreshRSS/blob/1ee1fcce91d64c8cee6b8621aaedbdeae0c9c330/Docker/Dockerfile-Alpine#L7-L9

Pourriez-vous essayer ce patch ? https://github.com/FreshRSS/FreshRSS/pull/3410/files
Juste une ligne, que vous pouvez par exemple ajouter Ă  la main

Bien sur, merci ! Voici le résultat :

/volume1/web/FreshRSS# ./cli/actualize-user.php --user sgrienen
FreshRSS install failed requirements:
• pdo-mysql
• fileinfo
• ok

Mais comme je disais plus haut, dans le profile PHP j'ai bien coché pdo_mysql. fileinfo je ne vois pas apparaitre dans la liste disponible des extensions PHP sur le Synology.

fileinfo n'est pas obligatoire, mais pdo-mysql l'est. Un Synology a souvent plusieurs versions de PHP installées. Essayez de voir s'il y a plusieurs exécutables PHP, et utilisez un chemin complet pour l'invoquer.

J'utilise déjà explicitement php74 pour l'appeler, ca devrait suffire non ? Mais je vais regarder ca oui, merci !

Je crois qu'on progresse, même si je ne suis pas sur de tout comprendre :-) j'ai regardé le contenu de /etc/php/php.ini, et il liste des extensions, il n'y avait pas pdo_mysql.so, je l'ai rajoute à la main, et lorsque j'exécute ceci :

./cli/actualize-user.php --user sgrienen

Il me dit cela :

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_mysql.so' - /usr/lib/php/modules/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
FreshRSS install failed requirements:
• pdo-mysql
• fileinfo
• ok

Je dois effectivement avoir quelque chose qui ne tourne pas rond dans la config de PHP, pourtant j'ai défini ce profile dans Web Station... je vais tenter de le recréer "from scratch".

/volume1/@appstore/PHP7.4/usr/local/bin/php74 /volume1/web/FreshRSS/cli/actualize-user.php --user sgrienen
FreshRSS actualizing user “sgrienen”…

Ca ca marche ! Je dois avoir un path qui doit pas coller je suppose... MERCI INFINIMENT !

Super. Ça serait bien si vous pouviez essayer de trouver un endroit dans notre documentation pour y insérer une recommandation pour Synology : https://freshrss.github.io/FreshRSS/
La documentation peut être éditée depuis https://github.com/FreshRSS/FreshRSS/tree/master/docs/

Tout petit bémol, le script actualize-user.php marche maintenant, avec le Task Scheduler, mais le script actualize_script.php lui pose encore des soucis :

/volume1/@appstore/PHP7.4/usr/local/bin/php74 -f /volume1/web/FreshRSS/app/actualize_script.php > /volume1/temp/FreshRSS.log 2>&1

il retourne :

FreshRSS starting feeds actualization at 2021-02-02T11:43:22+01:00
Results:

puis plus rien. Pas grave si l'autre marche, mais ca mérite d'être documenté je suppose. Encore un grand merci ! J'adore FreshRSS !

Que contient le fichier /volume1/temp/FreshRSS.log ?

Ce que je mentionnais juste au dessus :

FreshRSS starting feeds actualization at 2021-02-02T11:43:22+01:00
Results:

Puis plus rien bizarrement.

Super. Ça serait bien si vous pouviez essayer de trouver un endroit dans notre documentation pour y insérer une recommandation pour Synology : https://freshrss.github.io/FreshRSS/
La documentation peut être éditée depuis https://github.com/FreshRSS/FreshRSS/tree/master/docs/

Je veux bien essayer de documenter quelque chose, je ne suis pas très familier de GitHub, il faudra peut-être m'aider un peu.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

cwldev picture cwldev  Â·  5Comments

Stegemueller picture Stegemueller  Â·  3Comments

Aasemoon picture Aasemoon  Â·  6Comments

Alkarex picture Alkarex  Â·  5Comments

uncovery picture uncovery  Â·  4Comments