it-swarm.it

Tutte le directory elencate come non scrivibili

Titolo precedente: Impossibile installare le estensioni: errore: l'archivio non esiste

Ho rimosso e reinstallato Joomla 3.3.6 sul mio server CentOS 6.5. Volevo installare alcune utility di backup e un CCK. Tuttavia sono bloccato nel tentativo di installare estensioni ottenendo errori come:

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

Questo urla errore di autorizzazione ma questa è l'autorizzazione per la cartella jrt (tmp)

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

La maggior parte dei suggerimenti per questo è di impostarlo su 777 ma dovrei pensare che sia una cattiva pratica e non funziona comunque. Sono abituato alle autorizzazioni NTFS e penso di dover impostare le autorizzazioni sui figli di questa cartella ma il suo contenuto è vuoto per non c'è nulla da cambiare?

Ho visto questa triste storia un paio di volte sul web e il suo percorso o le relative autorizzazioni. So che il percorso esiste come se elimino la cartella ottengo anche l'errore

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

Non so se c'è altro da testare, ma PHP Il gestore è venuto anche nella ricerca e da quando ho aggiornato PHP in modo da poter eseguire questo versione di Joomla forse è anche un colpevole. Per testare ho creato un piccolo file php

<?php
   print "hello world";
?>

Per vedere se avrebbe mostrato "ciao mondo" che in effetti ha fatto.

PHP ini

Una risposta mi ha chiesto di cambiare le impostazioni di PHP.ini. Ecco cosa ho cambiato dalle impostazioni predefinite. Apportare modifiche qui non corregge gli errori.

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

permessi

Dopo aver verificato la parte corretta della console di amministrazione Sistema> Informazioni di sistema> Autorizzazioni directory non una sola voce qui è elencata come scrivibile. Devo modificare ogni albero delle cartelle? Ancora una volta non penso che l'impostazione 777 su queste cartelle sia una buona idea (o lavoro). Ad esempio, elenca la mia cartella temporanea come non scrivibile ma sembra le autorizzazioni corrette sopra.

Ho anche provato a cambiare il proprietario del gruppo nella cartella principale html, quindi ora tutte le cartelle e i file hanno Apache come gruppo. Nessun cambiamento finora.

errori Apache

Questo è ciò che ottengo quando provo a installare un'estensione

[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

Grido a @VilleNiemi per la sua risoluzione dei problemi che mi porta sul percorso write . (Sì, ho usato write invece di right come gioco di parole.) I miei permessi di directory sembravano essere la fonte del mio problema.

Unwritable

Soluzione se viene dedotto Host

Ho pensato che cambiare il cambio del gruppo da root a Apache avrebbe risolto il problema, ma nulla è cambiato. Dopo aver letto un altro post su Joomla Forum ho visto qualcuno cambiare il proprietario delle cartelle e dei file. Quindi dopo ho eseguito il seguente

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

Quindi, dopo aver aggiornato il mio schermo, vedo di nuovo il colore verde.

Green is good

Quindi i file nella radice della mia directory web sono impostati per le autorizzazioni con 744. Le cartelle con 755 e i file in tali cartelle sono 644. Penso che per ora sia tutto pronto.

Ha installato con successo il primo plugin sul mio sito. Vai alle gare con me!

Soluzione se Host condiviso.

Pubblicherà qualcosa di più dettagliato una volta completato, ma una buona lettura proviene da Dionysopoulos che è collegato in questa risposta 4 . Parla delle insidie ​​dei permessi e del perché la mia soluzione Host dedicata è negativa in generale e particolarmente negativa per i provider Host condivisi.

4
Matt

Il tipo di "archivio non esiste" suggerisce che Joomla! impossibile caricare l'archivio. Ciò porta alla mancata decompressione dell'archivio e al fatto che il contenuto non viene spostato nella cartella prevista. Ciò significa che la cartella prevista non esisterà.

O PHP ha un limite di upload troppo basso per i file in questione o il percorso tmp non è corretto. Se hai installato PHP, le impostazioni pertinenti sono probabilmente ancora ai loro valori predefiniti che sono 2 MB e troppo piccoli. In php.ini impostare upload_max_filesize e post_max_size su un valore più alto.

Mentre ci sei, aumenta anche max_execution_time in quanto causa problemi molto fastidiosi se scade nel bel mezzo di installazioni o aggiornamenti.

2
Ville Niemi