problème avec une constante

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Si on désactive escal, qu'on vide le cache et qu'on réactive Escal, le problème ne se pose pas si on est connecté mais si on est déconnecté ... page blanche.

N'ayant ps eu le problème sur mon site, voici l'erreur communiquée par un utilisateur :
Erreur dans les plugins : /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_options.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_fonctions.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_autoriser.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_pipelines.php

Donc que puis-je faire pour que ça fonctionne sans souci ?

Merci

JC

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

Il est fort probable que ce soit une erreur de syntaxe.
Je vais tester ça.

Merci

JC

Le 19/05/2020 à 15:15, Escurel a écrit :

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Il est possible que ça vienne de l'ordre de chargement des inclusions
et que lire_config ne soit pas défini à cette étape.

Peux tu essayer en ajoutant include_spip('inc/config');
avant tes defines ?

JL

Si on désactive escal, qu'on vide le cache et qu'on réactive Escal, le problème ne se pose pas si on est connecté mais si on est déconnecté ... page blanche.

N'ayant ps eu le problème sur mon site, voici l'erreur communiquée par un utilisateur :
Erreur dans les plugins : /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_options.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_fonctions.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_autoriser.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_pipelines.php

Donc que puis-je faire pour que ça fonctionne sans souci ?

Merci

JC

Ok je vais mettre ça en tout début de fichier.

Et donc la bonne syntaxe c'est
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
ou
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

?

JC
Le 19/05/2020 à 15:28, JLuc a écrit :

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Il est possible que ça vienne de l'ordre de chargement des inclusions
et que lire_config ne soit pas défini à cette étape.

Peux tu essayer en ajoutant include_spip('inc/config');
avant tes defines ?

JL

Si on désactive escal, qu'on vide le cache et qu'on réactive Escal, le problème ne se pose pas si on est connecté mais si on est déconnecté ... page blanche.

N'ayant ps eu le problème sur mon site, voici l'erreur communiquée par un utilisateur :
Erreur dans les plugins : /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_options.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/escal_fonctions.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_autoriser.php, /home/apmepileex/www/plugins/auto/escal/v4.3.74/inc/escal_pipelines.php

Donc que puis-je faire pour que ça fonctionne sans souci ?

Merci

JC

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 19/05/2020 à 15:15, Escurel a écrit :

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

non surement pas, define n'a qu'un seul argument, c'est lire_config qui a en a 2. Donc tu étais plutot bon.

C'est une vrai plait ce problème de est-ce que c'est par config ou par constante que l'on définie.

Personnellement j'ai opté pour tester en aval : si la constante est défini, je l'utilise, sinon je me rappatrie sur la config.

Mais pour revenir à tes moutons, comme dit JLUC : sans doute un problène d'ordre d'inclusion.

Mais comme pour toutes les pages blanches : afficher les erreurs php permet d'y voir plus claire :).

En local en dev, tu dois TOUJOURS afficher les erreurs PHP, et mêmes les warnings (qui revèlent souvent des fautes de conception)

Sauf qu'en local tout s'est bien passé.

La solution c'est donc d'ajouter include_spip('inc/config'); en début de fichier ?

JC

Le 19/05/2020 à 15:34, Maïeul Rouquette a écrit :

Le 19/05/2020 à 15:15, Escurel a écrit :

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

non surement pas, define n'a qu'un seul argument, c'est lire_config qui a en a 2. Donc tu étais plutot bon.

C'est une vrai plait ce problème de est-ce que c'est par config ou par constante que l'on définie.

Personnellement j'ai opté pour tester en aval : si la constante est défini, je l'utilise, sinon je me rappatrie sur la config.

Mais pour revenir à tes moutons, comme dit JLUC : sans doute un problène d'ordre d'inclusion.

Mais comme pour toutes les pages blanches : afficher les erreurs php permet d'y voir plus claire :).

En local en dev, tu dois TOUJOURS afficher les erreurs PHP, et mêmes les warnings (qui revèlent souvent des fautes de conception)

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 19/05/2020 à 15:43, Jean Christophe Villeneuve a écrit :

Sauf qu'en local tout s'est bien passé.

La solution c'est donc d'ajouter include_spip('inc/config'); en début de fichier ?

JC

Le 19/05/2020 à 15:34, Maïeul Rouquette a écrit :

Le 19/05/2020 à 15:15, Escurel a écrit :

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

non surement pas, define n'a qu'un seul argument, c'est lire_config qui a en a 2. Donc tu étais plutot bon.

C'est une vrai plait ce problème de est-ce que c'est par config ou par constante que l'on définie.

Personnellement j'ai opté pour tester en aval : si la constante est défini, je l'utilise, sinon je me rappatrie sur la config.

Mais pour revenir à tes moutons, comme dit JLUC : sans doute un problène d'ordre d'inclusion.

Mais comme pour toutes les pages blanches : afficher les erreurs php permet d'y voir plus claire :).

En local en dev, tu dois TOUJOURS afficher les erreurs PHP, et mêmes les warnings (qui revèlent souvent des fautes de conception)

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

oo, ce serait la solution.

Et pour répondre à ta question : regarde le nombre de paramètre de la fonction define et de la fonction lire_config, et tu pourrais déduire que la bonne syntaxe est
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

Le 19/05/2020 à 15:59, Maïeul Rouquette a écrit :

Le 19/05/2020 à 15:43, Jean Christophe Villeneuve a écrit :

Sauf qu'en local tout s'est bien passé.

La solution c'est donc d'ajouter include_spip('inc/config'); en début de fichier ?

JC

Le 19/05/2020 à 15:34, Maïeul Rouquette a écrit :

Le 19/05/2020 à 15:15, Escurel a écrit :

Bonjour JC,
ça serait pas plustôt :
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax'),1000 );

Le 19/05/2020 à 15:03, Jean-Christophe Villeneuve a écrit :

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

non surement pas, define n'a qu'un seul argument, c'est lire_config qui a en a 2. Donc tu étais plutot bon.

C'est une vrai plait ce problème de est-ce que c'est par config ou par constante que l'on définie.

Personnellement j'ai opté pour tester en aval : si la constante est défini, je l'utilise, sinon je me rappatrie sur la config.

Mais pour revenir à tes moutons, comme dit JLUC : sans doute un problène d'ordre d'inclusion.

Mais comme pour toutes les pages blanches : afficher les erreurs php permet d'y voir plus claire :).

En local en dev, tu dois TOUJOURS afficher les erreurs PHP, et mêmes les warnings (qui revèlent souvent des fautes de conception)

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

oo, ce serait la solution.

Et pour répondre à ta question : regarde le nombre de paramètre de la fonction define et de la fonction lire_config, et tu pourrais déduire que la bonne syntaxe est
define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );

_

Oui c'est bien ce que j'avais fait au départ.
C'est Escurel qui m'a mis le doute ...

JC

Mes excuses, j'ai lu trop vite la doc
https://code.spip.net/autodoc/tree/ecrire/inc/config.php.html#function_lire_config
cette fonction accepte 3 paramètres
cordialement

Le 19/05/2020 à 16:15, Jean-Christophe Villeneuve a écrit :

Oui c'est bien ce que j'avais fait au départ.
C'est Escurel qui m'a mis le doute ...

Aucun souci et merci d'avoir essayé.

JC

Le 19/05/2020 à 16:40, Escurel a écrit :

Mes excuses, j'ai lu trop vite la doc
https://code.spip.net/autodoc/tree/ecrire/inc/config.php.html#function_lire_config

cette fonction accepte 3 paramètres
cordialement

Le 19/05/2020 à 16:15, Jean-Christophe Villeneuve a écrit :

Oui c'est bien ce que j'avais fait au départ.
C'est Escurel qui m'a mis le doute ...

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Jean-Christophe Villeneuve a écrit le 19/05/2020 à 15:03 :

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Alors, il ne faut pas utiliser lire_config qui va tenter de faire une lecture en base de données.
Il faut utiliser les fonctions de meta (je sais plus le nom exact), voir la globale meta.
Et déserialiser la meta choisie.
Et récupérer la valeur voulue.

Il y a des plugins qui font ça, mais je ne sais plus lesquels.

--
RealET

Ah et donc mettre
include_spip('inc/config');
en début de fichier n'est pas une bonne idée ?

JC

Le 19/05/2020 à 22:50, RealET a écrit :

Jean-Christophe Villeneuve a écrit le 19/05/2020 à 15:03 :

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Alors, il ne faut pas utiliser lire_config qui va tenter de faire une lecture en base de données.
Il faut utiliser les fonctions de meta (je sais plus le nom exact), voir la globale meta.
Et déserialiser la meta choisie.
Et récupérer la valeur voulue.

Il y a des plugins qui font ça, mais je ne sais plus lesquels.

Le 19/05/2020 à 22:50, RealET a écrit :

Jean-Christophe Villeneuve a écrit le 19/05/2020 à 15:03 :

Bonjour

Dans mon plugin Escal, j'ai ceci dans escal_options.php

define('_IMG_MAX_WIDTH', 1000);
define('_IMG_MAX_HEIGHT', 1000);

qui ne pose pas de souci.
Mais j'aurais voulu proposer une option dans la configuration du plugin pour permettre de choisir la valeur.
J'ai donc fait ceci

define('_IMG_MAX_WIDTH', lire_config('escal/config/imgmax',1000) );
define('_IMG_MAX_HEIGHT', lire_config('escal/config/imgmax',1000) );

Et là j'ai un souci : page blanche !

Alors, il ne faut pas utiliser lire_config qui va tenter de faire une lecture en base de données.
Il faut utiliser les fonctions de meta (je sais plus le nom exact), voir la globale meta.
Et déserialiser la meta choisie.
Et récupérer la valeur voulue.

Il y a des plugins qui font ça, mais je ne sais plus lesquels.

heu... pourquoi ? lire_config ca existe c'est fait pour ca. les fonctiosn de meta sont de plus bas niveau et à éviter en general

Le 19/05/2020 à 23:21, Maïeul Rouquette a écrit :

Alors, il ne faut pas utiliser lire_config qui va tenter de faire une lecture en base de données.
Il faut utiliser les fonctions de meta (je sais plus le nom exact), voir la globale meta.
Et déserialiser la meta choisie.
Et récupérer la valeur voulue.
Il y a des plugins qui font ça, mais je ne sais plus lesquels.

heu... pourquoi ? lire_config ca existe c'est fait pour ca. les fonctiosn de meta sont de plus bas niveau et à éviter en general

Je n'en sais rien et j'ai fait une recherche et n'ai rien trouvé...
mais sans chercher je suis tomber sur ça dans le core
(ecrire/inc/utils.php · master · spip / spip · GitLab) :

if (!defined('_IMG_GD_MAX_PIXELS')) {
  define('_IMG_GD_MAX_PIXELS',
  (isset($GLOBALS['meta']['max_taille_vignettes']) and $GLOBALS['meta']['max_taille_vignettes'])
    ? $GLOBALS['meta']['max_taille_vignettes']
    : 0);
}

JL

Maïeul Rouquette a écrit le 19/05/2020 à 23:21 :

heu... pourquoi ? lire_config ca existe c'est fait pour ca. les fonctions de meta sont de plus bas niveau et à éviter en general

Sauf erreur de ma part, j'ai cru comprendre en lisant des commits de Cédric qu'il fallait absolument éviter les accès en base dans _options.php
Et il me semble que lire_config fait ce type d'accès.

Et c'est pour ça que
$GLOBALS['meta']['nommeta']) est le moyen de lire une meta sans accès en base.
meta qu'il faut déserialiser si c'est une config

--
RealET

Le 20/05/2020 à 16:07, RealET a écrit :

Maïeul Rouquette a écrit le 19/05/2020 à 23:21 :

heu... pourquoi ? lire_config ca existe c'est fait pour ca. les fonctions de meta sont de plus bas niveau et à éviter en general

Sauf erreur de ma part, j'ai cru comprendre en lisant des commits de Cédric qu'il fallait absolument éviter les accès en base dans _options.php
Et il me semble que lire_config fait ce type d'accès.

Et c'est pour ça que
$GLOBALS['meta']['nommeta']) est le moyen de lire une meta sans accès en base.
meta qu'il faut déserialiser si c'est une config

heu oui il faut bien éviter les accès en base (et globalement il faut éviter au maximum les _options), mais non lire_config() ne lis pas en base, mais lis précisement le meta, sauf si un autre moyen de stockage de config a été implémenté.

cf

https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/config.php#L102

mais ok le php doc est pas hyper clair, il ne précise pas que l'accès au meta est mis en cache via la global...