Erreur : cannot redeclare class FileSystemElement [Réglé]
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
J'ai deux sites, sous phpboost 4.1, installés comme suit :
- www
------- sthda_fr (version française)
---------------sthda_en (version anglaise)
Ces deux sites co-existent depuis plus de 2 ans et ont été créés à l'origine avec phpboost v3.
Ils ont bien bien fonctionnés sous v3, v4.0.
Quelques temps après le passage à la v4.1 j'ai le type d'erreur ci-dessous uniquement sur la version française :
Fatal error: Cannot redeclare class FileSystemElement in /web/sthda/sthda_fr/kernel/framework/io/filesystem/FileSystemElement.class.php on line 35
Je viens juste de comprendre que phpboost n'aime pas le type d'installation que j'ai utilisé et préfère plutôt :
- www
--- site1
--- site2
D'où l'erreur de re-déclaration rencontrée, car phpboost cherche des fichiers dans les sous-dossiers, et il va retomber sur un de ses fichiers qui sera dupliqué pour lui.
Aujourd'hui j'ai plus de 300 pages sur les deux sites (en version française et anglaise). Ces pages sont écrites avec le module article et wiki principalement et contiennent des liens rélatifs vers des images et fichiers (au moins 1000 images/fichiers) qui sont partagés entre les deux sites pour économiser l'espace disque..
Cela serait juste inimaginable pour moi de reinstaller les deux sites autrement et de devoir réécrire toutes mes pages en modifiant les différents liens relatifs. De plus, il va falloir mettre des redirections en place pour éviter des erreurs 404 et maintenir le référencement du site anglais.
Y aurait - il une solution, pour exclure uniquement le dossier sthda_en (lorsu'on est sur le site sthda_fr) de la recherche automatique que phpboost fait dans les sous dossiers?
Je souhaiterai vraiment pouvoir contourner le problème sans devoir réinstaller les deux sites...même s'il faut que je modifie le noyau à un point précis en php
Je vous remercie d'avance pour votre aide.
Cordialement,
AK
Édité par sthda Le 19/02/2015 à 06h39
Visiteur
Boosteur Inactif
Il te suffit de déplacer le dossier via ftp comme tu l'as montré ici:
- www
--- site1
--- site2
Passage de:
- www
------- sthda_fr (version française)
---------------sthda_en (version anglaise)
à :
- www
------- sthda_fr (version française)
--------sthda_en (version anglaise)
- www
------- sthda_fr (version française)
---------------sthda_en (version anglaise)
à :
- www
------- sthda_fr (version française)
--------sthda_en (version anglaise)
Et d'appliquer cette procédure sur le site que tu as déplacé, en l'occurence c'est sthda_EN : http://www.phpboost.com/wiki/changement-d-hebergement-ou-de-serveur
Bonne journée
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
Le problème c'est que mes pages du module wiki font appel, par liens rélatifs, à des images qui sont dans le dossier sthda_fr comme suit :
- www
------- sthda_fr (version française)
---------------mes_images
---------------sthda_en (version anglaise)
Ce dossier image est utilisé par les deux versions de mon site.
Donc si je fais la migration comme recommandé, il va falloir que j'édite toutes les pages du module wiki et articles de la version anglaise.
Si une alternative existe, je suis fortement preneur.
Aussi, pourriez vous me confirmer que le script de migration de phpboost met en place automatiquement les redirections 301 dans le fichier .htaccess? pour ne pas perdre mon référencement
Je vous remercie encore,
AK
Édité par sthda Le 19/02/2015 à 08h36
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
Citation :
Aussi, pourriez vous me confirmer que le script de migration de phpboost met en place automatiquement les redirections 301 dans le fichier .htaccess? pour ne pas perdre mon référencement
Non, pas besoin vu qu'il va modifier les liens relatif à la volé, si tu regarde bien tes articles du devrais avoir des liens de type /upload/mon_image.jpg
Cordialement, janus57
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
dans l'administration avancée du site en anglais, tu devrais avoir
URL : http://www.sthda.com
chemin de phpbboost : /english
on va appliquer le même schéma sur la partie française et dupliquer le dossier images pour récupérer les bonnes adresses d'images pour le site en anglais
Si j'ai bien compris tu as
www
-- admin
-- articles
--
-- english (contenant le pbt english)
--
--
-- images (contenant les images pour les deux sites)
---
et tu déclares une image en relatif soit:
/images/monimage pour le site français
../images/monimage sur le site en anglais
alors dans l'ordre
1 - site fr => administration => configuration avancée => déclarer /fr dans "chemin de phpboost" => envoyer
2 - créer le dossier fr à la racine du serveur et glisser déposer tous les fichiers du site en français SAUF le dossier "english"
à ce stade on a
www
-- fr
----admin
---- articles
----
----images
--english
----admin
----articles
3 - duppliquer le dossier image du site fr à la racine du serveur
certes cela fait doublon mais on garde la même structure de lien pour les deux sites, ce qui évitera d'avoir à éditer tous les articles d'un des deux sites
www
-- fr
----
----
---- images
-- english
----
----
-- images
il ne reste plus qu'à creer une redirection à la racine soit avec un index.html soit avec un .htaccess, pour que l'adresse http://www.sthda.com soit dirigée vers un des deux sites
www
-- fr
-- english
-- images
-- index.html ou .htaccess
je l'utilise régulièrement en local, quand je prépare un phpboost, je l'installe dans un dossier "devel", si le site est mis en ligne, je déplace la livrée dans un dossier "site online" et ça fonctionne très bien
Reste à savoir comment vont être redirigés les liens externes pointant vers ton site que tu aurais disséminés sur la toile.
à la place de la redirection, tu peux faire pointer ton nom de domaine sur le dossier fr ainsi tu ne perds rien pour le site fr, mais il faudra créer un sous-domaine pour accéder au site anglais (htttp://english.sthda.com).
dans un cas comme dans l'autre, un des deux sites sera lésé.
est-ce que le module URLUpdater pourra-t'etre utile, mes compétences s'arrête là
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
Je te remercie très sincèrement pour cette réponse détaillée, claire et intelligente.
Je vais mettre ta proposition en place et je reviens sur le forum dès que c'est fait pour dire ce qu'il en est.
Pour les redirections :
- Je vais pointer déjà mon nom de domaine sur le site fr
- Je vais essayer de voir comment rediriger automatiquement les anciens liens du site anglais.
Dans le fichier .htacces du site français je pourrais ajouter :
Redirect 301 /english/wiki/(.*) http://english.sthda.com/wiki/(.*)
Je sais pas si çà marchera mais je vais essayer.
S'il y a une autre solution pour la redirection je suis toujours preneur.
Merci encore Babsolune et Janus pour votre réactivité et merci à toute la communauté PHPBOOST!!
Bien cordialement,
AK
Édité par sthda Le 19/02/2015 à 15h01
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
J'ai commencé à réinstaller mon site comme suggéré par babsolune.
La réinstallation s'est bien passée.
Pour la redirection il y a un détails qui me gène même si ça marche.
Par exemple, j'ai mis en place la redirection, ci-dessous, pour rediriger les articles du module wiki http://www.sthda.com/wiki/ vers http://www.sthda.com/french/wiki/ :
Code HTACCESS :
Redirect permanent /wiki http://www.sthda.com/french/wiki
La redirection fonctionne mais l'URL des articles de destination se présente comme suit :
http://www.sthda.com/french/wiki/mon-article-1?title=mon-article-1 au lieu d'avoir juste http://www.sthda.com/french/wiki/mon-article-1
Sauriez vous ce que je dois modifier dans la syntaxe de ma redirection pour ne pas avoir la variable title à la fin de l'URL?
Je vous remercie d'avance,
AK
Édité par sthda Le 22/02/2015 à 11h21
olivierb Membre non connecté
-
Modérateur
- Voir le profil du membre olivierb
- Inscrit le : 07/02/2014
- Site internet
- Groupes :
-
Equipe Assistance
Pour l'adresse de ton article, as-tu activé la réécriture des url dans administration > configuration avancée ?
Attention car lorsque tu l'activeras, si ce n'est pas le cas actuellement, les redirections dans le htaccess devront suivre le même modèle d'adresses

Je pense d'ailleurs qu'il faut que tes deux sites soient configurés de la même manière afin de simplifier les redirections.
Un PHPBoostien vénérable
devrait confirmer ce que je viens d'écrire car je ne suis pas sûr de moi.Olivier.
Édité par olivierb Le 22/02/2015 à 11h54
Olivier


sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
Oui, je l'ai activé! Merci
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
sa changera rien car il fait un "Redirect permanent" qui renvois les URL brute, il faudrait faire une "vrai" redirection avec du "RewriteRule" qui rediriger aussi bien les URL qui ont déjà été réécrit que les URL qui n'ont pas été réécrit.
Cordialement, janus57
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
Auriez vous une syntaxe pour rediriger définitivement un dossier vers une autre destination (en utilisant RewriteRule)?
J'ai essayé le code ci-dessous. J'ai le même résultat qu'avec Redirect permanent
Code HTACCESS :
RewriteRule ^wiki(.*) http://www.sthda.com/french/wiki [L,R=301]
Cordialement,
AK
Édité par sthda Le 22/02/2015 à 12h35
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
c'est bien :
Citation :http://www.sthda.com/wiki/* vers ]http://www.sthda.com/french/wiki/*
Si oui essaye avec :
Code TEXT :
# Rewrite --- http://www.sthda.com/wiki/* => http://www.sthda.com/french/wiki/* RewriteRule ^wiki/ /french/wiki/
Ce code va par exemple faire ceci : http://www.sthda.com/wiki/creation-d-un-module-logiciel-avec-phpboost ==> http://www.sthda.com/french/wiki/creation-d-un-module-logiciel-avec-phpboost
Ce code ne redirige pas les URLs de type /wiki/wiki.php?title=creation-d-un-module-logiciel-avec-phpboost
Cordialement, janus57
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
J'ai essayé votre code mais çà me ramène juste sur la page d'accueil du module wiki.
J'ai essayé ensuite le code ci dessous :
Code TEXT :
RewriteRule ^wiki/(.*) /french/wiki/$1 [L,R=301]
Le résultat n'est pas satisfaisant et est :
http://www.sthda.com/french/wiki/title=creation-d-un-module-logiciel-avec-phpboost
Merci
AK
Édité par sthda Le 22/02/2015 à 12h59
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
le code donnée fonctionne si y a pas d'autre règles présentes.
Donc essaye :
Code TEXT :
# Rewrite --- http://www.sthda.com/wiki/* => http://www.sthda.com/french/wiki/* RewriteRule ^wiki/ /french/wiki/ [R=301,L]
Et ce code doit fonctionner car il a été testé en théorie.
Cordialement, janus57
sthda Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre sthda
- Inscrit le : 24/05/2010
- Site internet
- Groupes :
Malheureusement pour moi, ce code ne fonctionne pas chez moi et il me renvoie juste sur la page d'accueil. Je n'ai pas d'autres directives concernant le module wiki dans mon htaccess.
Merci Bien,
AK
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
