Archives de la liste a​i​d​e​@p​a​h​e​k​o​.c​l​o​u​d​

Plugins (suite)

Jacques Lacroute

22/10/2018 18:41:21

Bonsoir,

Je rencontre toujours des problèmes avec mon plugin, de deux ordres:

Premier problème:

Quand j'essaye de créer une archive (sur mon Mac) je me place dans le dossier du
plugin et j'ai l'instruction suivante dans mon terminal

tar --exclude='.[^/]*' -czvf statscompta.tar.gz  ./

et j'obtiens une archive qui exclut les .DS_Store, dont je craignais qu'ils ne
soient source de problèmes.

Dès que je mets ce fichier dans le dossier plugins et que je veux gérer les extensions
je suis en erreur 
pourquoi le fichier garradin_plugin.ini qui est bien dans l'archive(j'ai
vérifié) n'est-il pas trouvé ?

> [22-Oct-2018 18:05:06 Europe/Paris] 
> ========================= Error ref 4hrxbbi5 =========================
> 
> http://garradin9rc6:8888/admin/config/plugins.php
<http://garradin9rc6:8888/admin/config/plugins.php>
> 
> ErrorException [Code 0] Warning:
parse_ini_file(phar:///Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz/garradin_plugin.ini
<phar:///Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz/garradin_plugin.ini>):
failed to open stream: phar error: "garradin_plugin.ini" is not a file in phar
"/Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz"
> /Users/jacques/Desktop/garradin-0.9.0-rc6/include/lib/Garradin/Plugin.php:501
> 
> #0 [internal function]: KD2\ErrorManager::errorHandler(2, 'Warning:
parse_...', '/Users/jacques/...', 501, Array)
> #1 /Users/jacques/Desktop/garradin-0.9.0-rc6/include/lib/Garradin/Plugin.php(501):
parse_ini_file('phar:///Users/j <phar:///Users/j>...', false)
> #2 /Users/jacques/Desktop/garradin-0.9.0-rc6/www/admin/config/plugins.php(55):
Garradin\Plugin::listDownloaded()
> #3 {main}
> 
> Garradin version: 0.9.0-rc6
> Garradin data root: /Users/jacques/Desktop/garradin-0.9.0-rc6
> PHP version: 7.2.8
> HTTP_HOST: garradin9rc6:8888

Le plugin, s'il est sous forme de dossier décompressé, se comporte normalement
(s'install et fonctionne)

Deuxième problème:

Quand je transfère le dossier décompressé sur mon serveur NAS, après installation

que je clique le lien du menu créé par le plugin

http://192.168.1.60:8100/admin/plugin/statscompta/
<http://192.168.1.60:8100/admin/plugin/statscompta/>


J'obtiens ceci

> Erreur 404
> 
> Page non trouvée
> 
> Retour <http://192.168.1.60:8100/admin/plugin/>Rien dans le log
d'erreur..

Sur mon Mac, sous MAMP, le lien équivalent fonctionne..?? (mais IP légèrement
différentes bien sûr, et ne tournent pas sur la même machine, mais dans le même
réseau)

Je suis un peu perdu..

Mon NAS est un Synology  DS112 à jour avec les dernières release.

Re: Plugins (suite)

BohwaZ/Garradin

22/10/2018 22:11:20

On Mon, 22 Oct 2018 18:39:33 +0200 / "Jacques Lacroute"
<jlacroute@gmail.com> said :

> Je rencontre toujours des problèmes avec mon plugin, de deux ordres:
> 
> Premier problème:
> 
> Quand j'essaye de créer une archive (sur mon Mac) je me place dans le
> dossier du plugin et j'ai l'instruction suivante dans mon terminal
> 
> tar --exclude='.[^/]*' -czvf statscompta.tar.gz  ./
> 
> et j'obtiens une archive qui exclut les .DS_Store, dont je craignais
> qu'ils ne soient source de problèmes.

Normalement pas de souci si ces fichiers sont présents dans l'archive,
c'est juste qu'ils ne servent à rien :)

> Dès que je mets ce fichier dans le dossier plugins et que je veux
> gérer les extensions je suis en erreur pourquoi le fichier
> garradin_plugin.ini qui est bien dans l'archive(j'ai vérifié)
> n'est-il pas trouvé ?

Vérifie que le fichier garradin_plugin.ini est bien à la racine de
l'archive ? Sinon envoie le fichier .tar.gz en privé et je regarde.

> Quand je transfère le dossier décompressé sur mon serveur NAS, après
> installation
> 
> que je clique le lien du menu créé par le plugin
> J'obtiens ceci
> 
> > Erreur 404
>
> Sur mon Mac, sous MAMP, le lien équivalent fonctionne..?? (mais IP
> légèrement différentes bien sûr, et ne tournent pas sur la même
> machine, mais dans le même réseau)

Est-ce que ça ne serait pas un souci de redirection ? Est-ce que ton
NAS utilise bien apache ? Si oui quelle version ?

J'ai changé un peu les redirections dans Garradin 0.9 : ça utilise
maintenant une option (FallbackResource) dans le .htaccess qui ne
fonctionne qu'avec Apache 2.2.16 ou supérieur (sorti en 2010, il y a 8
ans et demi, donc ça devrait être bon un peu partout !), mais
normalement même si l'Apache est trop vieux ça devrait quand même
marcher (directive ErrorDocument dans le .htaccess).

Re: Plugins (suite)

Jacques Lacroute

23/10/2018 09:03:05

>> Dès que je mets ce fichier dans le dossier plugins et que je veux
>> gérer les extensions je suis en erreur pourquoi le fichier
>> garradin_plugin.ini qui est bien dans l'archive(j'ai vérifié)
>> n'est-il pas trouvé ?
> 
> Vérifie que le fichier garradin_plugin.ini est bien à la racine de
> l'archive ? Sinon envoie le fichier .tar.gz en privé et je regarde.


Pour le premier problème, c'était bien la structure de l'archive qui était en
jeu
Je créais un répertoire de premier niveau dans lequel les fichiers étaient contenus.
J'ai créé l'archive avec un outil et cela est OK maintenant (j'installe
à partir du tar.gz) mais j'ai l'erreur suivante

> [23-Oct-2018 08:32:31 Europe/Paris] 
> ========================= Error ref 9qwgz4e2 =========================
> 
> http://garradin9rc6:8888/admin/plugin/statscompta/
> 
> ErrorException [Code 0] Warning:
file_put_contents(phar:///Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz/www/admin/adretDTTcomptes.txt):
failed to open stream: Cannot create phar
'/Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz', file
extension (or combination) not recognised or the directory does not exist
>
phar:///Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz/www/admin/index.php:140
> 
> #0 [internal function]: KD2\ErrorManager::errorHandler(2, 'Warning:
file_p...', 'phar:///Users/j...', 140, Array)
> #1
phar:///Users/jacques/Desktop/garradin-0.9.0-rc6/plugins/statscompta.tar.gz/www/admin/index.php(140):
file_put_contents('phar:///Users/j...', '{ "data" :
[{"i...')
> #2 /Users/jacques/Desktop/garradin-0.9.0-rc6/include/lib/Garradin/Plugin.php(224):
include('phar:///Users/j...')
> #3 /Users/jacques/Desktop/garradin-0.9.0-rc6/www/admin/plugin.php(18):
Garradin\Plugin->call('admin/index.php')
> #4 /Users/jacques/Desktop/garradin-0.9.0-rc6/www/_route.php(25):
require('/Users/jacques/...')
> #5 {main}

Je suppose que dans mes scripts j'adresse "mal" les fichiers que je crée
dans index.php : voici la ligne 140 "fautive" ?

file_put_contents(dirname(__FILE__)."/adretDTTcomptes.txt","{
\"data\" : ".json_encode($tableau1)."}");

mais pourquoi cela fonctionne-t-il si j'utilise l'archive décompresssée ?

Mon NAS est sur Apache 2.4, je vais regarder les options du php.ini quand j'aurai
résolu l'autre question :)

A suivre merci de ton aide..

Re: Plugins (suite)

BohwaZ/Garradin

23/10/2018 11:28:35

> Je suppose que dans mes scripts j'adresse "mal" les fichiers que
je
> crée dans index.php : voici la ligne 140 "fautive" ?
> 
> file_put_contents(dirname(__FILE__)."/adretDTTcomptes.txt","{
\"data\" :
> ".json_encode($tableau1)."}");
> 
> mais pourquoi cela fonctionne-t-il si j'utilise l'archive
> décompresssée ?

Tu essaye d'écrire dans une archive compressée, c'est impossible :)

si tu dois enregistrer des données temporaires, utilise plutôt la classe
Static_Cache. Exemple :

Static_Cache::store('plugin_adret', json_encode(['data' =>
$tableau1]));

Et ensuite pour récupérer :

$data = Static_Cache::get('plugin_adret');

if ($data)
{
	$data = json_decode($data);
}
else
{
	echo "Données non disponibles...";
}

Les données enregistrées dans Static_Cache sont purgées périodiquement
(tous les jours normalement). Pour un stockage permanent il faut
utiliser une autre solution, comme stocker dans la base de données ou
dans un répertoire de Garradin.

Cordialement.

Re: Plugins (suite)

Jacques Lacroute

23/10/2018 13:52:36

OK, je me colle à modifier mon code...

A plus..

Et merci

> Le 23 oct. 2018 à 11:27, BohwaZ/Garradin <garradin@garradin.eu> a écrit :
> 
>> 
>> Je suppose que dans mes scripts j'adresse "mal" les fichiers
que je
>> crée dans index.php : voici la ligne 140 "fautive" ?
>> 
>> file_put_contents(dirname(__FILE__)."/adretDTTcomptes.txt","{
\"data\" :
>> ".json_encode($tableau1)."}");
>> 
>> mais pourquoi cela fonctionne-t-il si j'utilise l'archive
>> décompresssée ?
> 
> Tu essaye d'écrire dans une archive compressée, c'est impossible
:)
> 
> si tu dois enregistrer des données temporaires, utilise plutôt la classe
> Static_Cache. Exemple :
> 
> Static_Cache::store('plugin_adret', json_encode(['data' =>
$tableau1]));
> 
> Et ensuite pour récupérer :
> 
> $data = Static_Cache::get('plugin_adret');
> 
> if ($data)
> {
> 	$data = json_decode($data);
> }
> else
> {
> 	echo "Données non disponibles...";
> }
> 
> Les données enregistrées dans Static_Cache sont purgées périodiquement
> (tous les jours normalement). Pour un stockage permanent il faut
> utiliser une autre solution, comme stocker dans la base de données ou
> dans un répertoire de Garradin.
> 
> Cordialement.
> 
> -- 
> . ____   
> / ___|  Liste d'entraide des utilisateurs de Garradin
> | |  _   http://garradin.eu/ <http://garradin.eu/>
> | |_| |
> \____|  Désinscription : http://garradin.eu/aide/
<http://garradin.eu/aide/>