cljosse a écrit:
Bojour
Il faut plutot écrire dans le ficgier Ws.php
if (!defined('PHPWG_ROOT_PATH')) define ('PHPWG_ROOT_PATH', './');
De façon lorque l'on fait un include de ws.php le programme(ws2.php) il garde son répertoitre de référence déclaré dans ws2.php
1°) cas Dans le fichier ws2.php situé à la racine de ton site:
Tu écris:
define ('SITE_ROOT_PATH', './');
define ('PHPWG_ROOT_PATH', 'SITE_ROOT_PATH'.'piwigo/');
include 'PHPWG_ROOT_PATH.'ws.php'
J'ai essayé mais j'ai toujours "Constant PHPWG_ROOT_PATH already defined in..." ce qui génère "Notice: unserialize() [function.unserialize]: Error at offset 0 of 3951 bytes in E:\www\monsite\ws2.php on line 55"
Hors ligne
Il faut que tu fasse cette modification
include/ws_protocols/php_encoder.php
function getContentType()
en remplaçant return 'text/plain' par return 'text/html'
les fichier sont de type html et non plain, sinon pas d'affichage correct sous FF
Tu pourrais simplement faire un
<iframe src="ws2.php" ></iframe>
voir en exemple:
http://cl.josse.free.fr/test_ws.html
Hors ligne
Oui... Mais non ^^
Il faudrait au maximum éviter de toucher au code natif de Piwigo car à la moindre mise à jour : Bye, bye, les modifs. Donc, s'il y a d'autres approches, il faut les privilégier. Et puis tu remarqueras que les iframe, c'est vraiment pas top sans parler du HTML Strict (dans mon cas).
J'ai proposé une solution avec iframe uniquement à cause de la double déclaration de redirect() qui est une fonction que l'on retrouve dans Piwigo et FluxBB. Donc, sur ma page, comme j'affiche aussi les 5 dernières discussions de mon forum par le biais d'un include d'une fonction d'externalisation des données de FluxBB, j'obtenais une erreur "can not redeclare ...".
J'ai résolu en renommant la fonction redirect() de FluxBB mais, à terme, il serait bon de changer le nom de la fonction redirect() de Piwigo (d'où le [Bugtracker] ticket 1418).
Enfin, l'essentiel est que cela fonctionne en ligne sans avoir à bidouiller le core de Piwigo.
Hors ligne
Eric a écrit:
@cljosse (pour info):
On a une erreur php (PHPWG_ROOT_PATH already defined in...).
Bonjour.
Réflexion matinale.
Ajoute dans ton include/config_local.inc.php
$conf['show_php_errors'] = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
Comme cela les "warning" PHP ne seront plus affichés .
A+
Dernière modification par cljosse (2010-01-31 11:42:10)
Hors ligne
Euh... Désolé mais je ne vois pas le rapport avec le config_local.inc.php. L'erreur ne se trouve pas sur la galerie mais sur ma page d'index sur laquelle j'inclue mon ws2.php. Et uniquement en local, pas sur mon site en ligne.
Hors ligne
@éric
Une petite explication:
Quand tu inclus ws2.php tu définis la variable PHPWG_ROOT_PATH
pour inclure "include/common.inc.php" sinon un 'Hacking attempt!' est renvoyé.
Ta variable est bien définie à ce moment. Et quand tu inclus ws.php
le warning apparait.
Deux solutions pour supprimer ce Warning
Soit tu corriges le fichier ws.php (peut-etre une demande de modification à remonter)
Ou tu modifies la gestion des erreurs de ton serveur.
La trois possibilités:
1°) - possibilitée par programme avec init_set(xx), ini_restore(xx),error_reporting();
2°) - modifier ton fichier php.ini.
3°) - modifier la variable $conf['show_php_errors'] :
Quand tu écris dans ton fichier include/config_local.inc.php
$conf['show_php_errors'] = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
Piwigo lors du chargement du programme lit ce fichier de configuration et transmet les informations au serveur
Ce qui est equivaut à modifier la variable error_reporting de ton fichier php.ini
error_reporting — Fixe le niveau de rapport d'erreurs PHP
Par défaut dans easyphp ou wampServer
error_reporting = E_ALL
chez free error_reporting = 2039 voir phpinfo() ce qui ce décomponse en :
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 ~E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
Le bit 8 (E_NOTICE ) est bien à zéro c'est bien pour cette raison que le warning n'est visible qu' en local.
Toutes les erreurs sont affichées,
Le fait de mettre le bit E_NOTICE à zéro masque les erreurs de type WARNING.
Erreur émise sur une redéclaration de constante comme dans ton cas.
voir http://www.lephpfacile.com/manuel-php/f … orting.php
J' espère que ces explications t'aideront à y voir plus clairi.
A+
Dernière modification par cljosse (2010-01-31 17:14:40)
Hors ligne
Laurence B. a dit : "Eric, vous êtes le maillon faible. Au revoir !" :-)
Très bonne analyse, M. cljosse !
Je vais m'employer à trouver une solution pérenne à ce problème (modification de ws.php ?) car masquer les erreurs, c'est un peu cacher la m.. au chat.
Hors ligne
Eric, nous avons besoin de toi. => Tu restes.
Et M.... à Laurence B.!
;-)
Hors ligne
VDigital a écrit:
Eric, nous avons besoin de toi. => Tu restes.
Et M.... à Laurence B.!
;-)
c'est vrai
Sinon on manquerait d'idées :-))
Hors ligne
cljosse a écrit:
VDigital a écrit:
Eric, nous avons besoin de toi. => Tu restes.
Et M.... à Laurence B.!
;-)c'est vrai
Sinon on manquerait d'idées :-))
Bon, ben... Devant tant de soutien, je ne peux faire autrement que rester. Et puis de quoi elle se mêle Laurence B. ;-))
Plus sérieusement, je vais résumer la situation (à rectifier si nécessaire). Nous avons donc 3 problèmes à résoudre dans le cas qui nous occupe ici :
1- Bug:1418, pour ne plus avoir d'incompatibilités avec d'autres scripts sur la fonction redirect()
2- Modifier ws.php pour éviter d'avoir des problèmes de redéfinition de PHPWG_ROOT_PATH
3- Modifier include/ws_protocols/php_encoder.php pour générer du "text/html" au lieu du "text/plain"
Pour le point 1, cela va impliquer la modification de tous les plugins faisant appel à redirect(). J'en ai dénombré moins d'une dizaine. Pour les points 2 et 3, il faudra voir si de telles modifications n'auront pas d'effets de bord néfastes.
On en parle ici ou serait-il préférable d'ouvrir un topic dans la section "Demandes de fonctionnalité" ?
Hors ligne
Eric a écrit:
On en parle ici ou serait-il préférable d'ouvrir un topic dans la section "Demandes de fonctionnalité" ?
Je pense qu'il serait préférable d'ouvrir un topic "Demandes de fonctionnalité", de façon à terminer ce topic et passer à autre chose.
Hors ligne
Topic, j'ai des interrogations, et des suggestions à faire.
Hors ligne
Hors ligne