Les avertissements suivants se sont produits :
Warning [2] Undefined array key 0 - Line: 1640 - File: showthread.php PHP 8.2.18 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php 1640 errorHandler->error_callback
/showthread.php 915 buildtree




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Upload thème XML avec CMS Made Simple
#3
Bonjour Bess,

C'est la dernière version de cmsms 1.10.3, avec la version 1.1.4 de theme manager

[Image: 2_27-03-2012_10-15-35.jpg]

J'ai peut être ce problème à cause de la configuration de mon serveur, puisque j'ai ces messages :

[Image: 2_27-03-2012_10-19-11.jpg]

Mais je ne changerais pas ces paramètres qui sont tel quel pour des raisons de sécurité.


Je vais expliquer le problème un peu plus clairement, car j'ai déjà vu ce problème sur ce forum (ainsi que sur d'autres) et aucune solutions n'ont été apportés (pour le chargement de thème via XML).

Je veux utilise un thème XML disponible sur le site de thème de cmsms.

Lorsque j'utilise la fonction "Importer" de theme manager, il me retourne comme erreur à chaque fois :

Citation :DTD pas bon (ce n'est pas le message exacte, mais ça s'en rapproche)

J'ai donc commencé à regarder comment fonctionne le module theme manager, et j'ai commencé à débugger le script.

J'ai essayé d'afficher le contenu du XML (en faisant un var_dump($xml); où le $xml = file_gets_content) et ça ne me retournait rien du tout.

J'ai donc regardé un poil plus haut, et affiché le fichier fraîchement uploadé, il m'indiquait le répertoire temporaire de la distribution du serveur, sur lequel, bien entendu, Apache n'a pas accès.

J'ai donc compris que le fichier n'était juste pas accessible avec ma configuration, et qu'il fallait que je déplace le fichier télécharger vers un endroit accessible par Apache (plus globalement cmsms).

A partir de là, l'upload de thème est devenu fonctionnel.

Je trouve quand même bizarre pour cmsms, que les fichiers uploadés ne soit pas directement mis dans le dossier /tmp disponible au root de l'install cmsms.

A moins que le dossier /tmp ne soit pas correctement définis suivant la configuration du serveur ? Je vais essayer de me pencher un peu plus loin là dessus.

-----------

Alors, pour rendre plus propre ce bout de scripts :

Modifier le fichier ./fileloc.php

Après ceci
Code :
[== PHP ==]
define("TMP_TEMPLATES_C_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'templates_c');

Ajouter
Code :
[== PHP ==]
define("TMP_FOLDER_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp');

Résultat attendu
Code :
[== PHP ==]
define("TMP_TEMPLATES_C_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'templates_c');
define("TMP_FOLDER_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp');


Enregistrer et fermer le fichier

Modifier le fichier ./modules/ThemeManager/action.importtheme.php

A la ligne 104 vous avez actuellement ceci :
Code :
[== PHP ==]
// $file['tmp_name'] is the file we have to parse
$xml = file_get_contents( $file['tmp_name'] );

Remplacer par :
Code :
[== PHP ==]
// Define new name and move it to a good folder
$new_upload_file = TMP_FOLDER_LOCATION.'theme.xml';
if(!cms_move_uploaded_file($file['tmp_name'], $new_upload_file))
    {
    $this->DisplayErrorPage( $id, $params, $returnid,
       $this->Lang('error_nofilesuploaded'));
    return;
    }

// $file['tmp_name'] is the file we have to parse
$xml = file_get_contents($new_upload_file);

Attention, je n'ai pas testé ce bout de code (je n'ai pas accès à mon serveur en journée (boulot oblige))


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)