web-dev-qa-db-fra.com

Tous les répertoires répertoriés comme non écrites

Titre précédent: Impossible d'installer les extensions: Erreur: l'archive n'existe pas

J'ai supprimé et réinstallé Joomla 3.3.6 sur mon serveur CentOS 6.5. Je voulais installer des utilitaires de sauvegarde et une clé CCK. Cependant, je suis coincé pour essayer d'installer des extensions avec des erreurs comme:

Error
Archive does not exist

Warning
JFolder: :files: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JFolder: :folder: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JFolder: :files: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JInstaller: :Install: Cannot find Joomla XML setup file

Cette erreur d'autorisation de scream mais c'est l'autorisation sur le dossier jrt (tmp)

drwxr-xr-x.  2 root root  4096 Jan 16 22:32 jrt

La plupart des suggestions à cet égard consistent à définir la valeur à 777, mais je devrais penser que c'est une mauvaise pratique et que cela ne fonctionne pas de toute façon. Je suis habitué aux autorisations NTFS et je pense que je dois définir les autorisations sur les enfants de ce dossier mais son contenu est vide car il n'y a rien à changer?

J'ai vu cette triste histoire à quelques reprises sur le Web et son chemin ou ses autorisations. Je sais que le chemin existe comme si je supprimais le dossier, je reçois aussi l'erreur

JFolder: :folder: Path is not a folder. Path: /var/www/html/jrt

Je ne sais pas s'il y a autre chose à tester, mais PHP Un gestionnaire est également apparu dans la recherche et depuis que j'ai mis à jour PHP afin de pouvoir l'exécuter. Joomla est peut-être aussi un coupable. Pour tester j’ai créé un petit fichier php

<?php
   print "hello world";
?>

Pour voir si cela afficherait "bonjour le monde", ce qu'il a effectivement fait.

PHP ini

Une réponse m'a demandé de changer les paramètres de PHP.ini. Voici ce que j'ai changé des valeurs par défaut. Faire des changements ici ne corrige pas les erreurs.

upload_max_filesize = 10M
post_max_size = 11M
max_input_time = 300
max_execution_time = 120
default_socket_timeout = 120

Autorisations

Après avoir vérifié la partie correcte de la console d’administration Système> Informations système> Autorisations de répertoire, aucune entrée ici n’est répertoriée comme accessible en écriture. Dois-je modifier chaque arborescence de dossiers? Encore une fois, je ne pense pas que définir 777 sur ces dossiers soit une bonne idée (ou un travail). Par exemple, la liste de mon dossier temporaire est non lisible, mais les autorisations ci-dessus sont correctes.

J'ai aussi essayé de changer le propriétaire du groupe sur le dossier racine html afin que tous les dossiers et fichiers aient Apache en tant que groupe. Aucun changement jusqu'à présent.

erreurs Apache

C'est ce que je reçois quand j'essaye d'installer une extension

[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  file_put_contents(/var/www/html/jrt/plg_webinstaller_3.2v1.0.5.Zip): failed to open stream: Permission denied in /var/www/html/libraries/joomla/filesystem/file.php on line 431, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  array_merge(): Argument #1 is not an array in /var/www/html/libraries/cms/installer/helper.php on line 154, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/libraries/cms/installer/helper.php on line 207, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  file_put_contents(/var/www/html/jrt/plg_webinstaller_3.2v1.0.5.Zip): failed to open stream: Permission denied in /var/www/html/libraries/joomla/filesystem/file.php on line 431, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  array_merge(): Argument #1 is not an array in /var/www/html/libraries/cms/installer/helper.php on line 154, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/libraries/cms/installer/helper.php on line 207, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
4
Matt

Un grand bravo à @VilleNiemi pour son dépannage en me plaçant sur le chemin d'écriture . (Oui, j’ai utilisé écrire au lieu de droit comme jeu de mots.) Les autorisations de mon répertoire semblaient être la source de mon problème.

Unwritable

Solution si l'hôte est dédicacé

Je pensais que changer le groupe de root en Apache résoudrait le problème mais rien ne changeait. Après avoir lu un autre article sur Joomla Forum , j'ai vu quelqu'un changer le propriétaire des dossiers et des fichiers. Donc après avoir couru ce qui suit

Sudo chown -R Apache:apache /var/www/html/

Puis, après avoir rafraîchi mon écran, je vois à nouveau la couleur verte.

Green is good

Ainsi, les fichiers à la racine de mon répertoire Web sont configurés pour les autorisations avec 744. Les dossiers avec 755 et les fichiers dans ces dossiers sont 644. Pensez que tout est prêt pour le moment.

J'ai réussi à installer le premier plugin sur mon site. En route pour les courses avec moi!

Solution si hôte partagé.

Publiera quelque chose de plus verbeux une fois terminé, mais une bonne lecture provient de Dionysopoulos qui est lié à cette réponse 4 . Il aborde les pièges des autorisations et explique pourquoi ma solution d'hôte dédiée est mauvaise en général et particulièrement mauvaise pour les fournisseurs d'hôte partagés.

4
Matt

Les "archives n'existent pas" suggèrent en quelque sorte que Joomla! n'a pas réussi à télécharger l'archive. Cela a pour conséquence que l'archive ne parvient pas à décompresser et que le contenu n'est pas déplacé dans le dossier attendu. Ce qui signifie que le dossier attendu n’existera pas.

Soit votre PHP a une limite de téléchargement trop basse pour les fichiers en question, soit votre chemin tmp est incorrect. Si vous avez installé PHP vous-même, les paramètres appropriés sont probablement toujours à leurs valeurs par défaut qui sont 2 Mo et trop petit. Dans php.ini, définissez upload_max_filesize et post_max_size sur une valeur plus élevée.

Pendant que vous y êtes, augmentez également max_execution_time, car cela entraîne des problèmes très gênants s’il arrive à expiration au milieu des installations ou des mises à jour.

2
Ville Niemi