Magento CSS et JavaScript ne se chargent pas en raison de l'utilisation du chemin du système de fichiers

29

Je n'ai pas pu installer un module à l'aide de Magento Connect, obtenant une Connection Error try again latererreur. En suivant les instructions du développeur du module, j'ai tenté de corriger les autorisations dans la racine du document avec:

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod o+w var var/.htaccess app/etc
chmod 550 mage
chmod -R o+w media

Cela ne fonctionnait toujours pas, j'ai donc fini par installer le module manuellement. Je me suis ensuite connecté au backend d'administration et Magento essayait de servir des fichiers CSS en utilisant les chemins de fichiers système au lieu d'URL comme ceci:

<link rel="stylesheet" type="text/css" href="/home/user/public_html/js/calendar/calendar-win2k-1.css" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/reset.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/boxes.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/custom.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/xmlconnect/boxes.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/menu.css" media="screen, projection" />

J'ai immédiatement supprimé l'extension et essayé de faire correspondre les perms d'un autre serveur avec un Magento en vain. J'ai aussi:

  • Caches locaux, APC et Magento effacés
  • Regardé dans les journaux d'erreurs (la journalisation est activée)
  • revérifié les valeurs correctes de web / unsecure / base_url et web / secure / base_url dans la base de données
  • Redémarré, 3 fois;)

Minify n'est pas utilisé. Les fichiers CSS de fusion sont activés, mais je ne peux pas comprendre comment désactiver sans l'interface d'administration (l'enregistrement et la navigation ne fonctionnent pas, même lorsque je remplace les valeurs correctes par Firebug). Toutes les idées seraient grandement appréciées!

(Question initialement publiée par @reflexiv sur Stack Overflow )

Navarr
la source
Activez le journal des exceptions et vérifiez si tous les fichiers existent.
joseantgv

Réponses:

42

Magento utilisant des URL de chemin d'accès complet pour accéder aux fichiers CSS est une erreur courante qui résulte de deux choses:

  • Activation de la fusion des fichiers CSS
  • Magento ne pouvant pas lire / écrire sur le support / dossier.

Pour résoudre ce problème, veuillez vous assurer que:

  • Le support / dossier existe dans votre installation Magento.
  • Le support / dossier est accessible en écriture par votre serveur Web.

Comme @flochtililoch l'a publié sur Stack Exchange :

Vous devez vérifier que apache possède réellement le répertoire multimédia , en vérifiant d'abord quel utilisateur apache s'exécute , puis en ajustant les autorisations en conséquence:

chown -R <apache_user> media
chmod -R ug+w media

Plus d'informations ici: Autorisations du système de fichiers Magento

Navarr
la source
J'ai eu le même problème car la fusion CSS / JS était activée.
DmitryR
1
@DmitryR: L'activation de la fusion n'est pas en soi le problème, le serveur Web ne pouvant pas écrire sur le média est le problème. Il tente de le faire lorsque la fusion est activée, échoue et cela se produit. ;)
Navarr
Cela a une grave erreur: il ne rend pas seulement le dossier accessible en écriture par l'utilisateur apache, il rend le dossier accessible en écriture par tout le monde . NE FAITES PAS CELA. Cela ouvre un énorme trou de sécurité.
Michael Hampton
Bon appel. Je l'ai mis à jour pour être ug + w au lieu de o + w
Navarr
3

Je viens de rencontrer un problème très similaire lors de la copie d'un site d'un serveur en direct vers un serveur apache de développement local (MAMP). Ce qui suit l'a résolu pour moi:

  1. effacement media/csset media/jsde tous les fichiers
  2. Dans le core_config_dataparamètre de table de base de données :
    dev/js/merge_filesde 0 (au lieu de 1)
    dev/css/merge_css_filesà 0 (au lieu de 1)
  3. clairière var/cache

Les fichiers front et backend rechargés et maintenant les fichiers css / js sont correctement servis.

Freshwebs
la source