it-swarm-es.com

Todos los directorios listados como no escribibles

Título anterior: No se pueden instalar extensiones: Error: El archivo no existe

Eliminé y reinstalé Joomla 3.3.6 en mi servidor CentOS 6.5. Quería instalar algunas utilidades de respaldo y un CCK. Sin embargo, estoy atascado tratando de instalar extensiones obteniendo errores como:

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

Esto grita error de permiso pero este es el permiso en la carpeta jrt (tmp)

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

La mayoría de las sugerencias para esto son establecerlo en 777, pero creo que es una mala práctica y de todos modos no funciona. Estoy acostumbrado a los permisos NTFS y creo que necesito establecer los permisos en los hijos de esta carpeta, pero su contenido está vacío, ¿no hay nada que cambiar?

He visto esta triste historia varias veces en la web y su ruta o permisos relacionados. Sé que la ruta existe como si elimino la carpeta, también aparece el error

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

No sé si hay más para probar esto, pero PHP Handler también apareció en la investigación y desde que actualicé PHP para poder ejecutar esto la versión de Joomla quizás también sea un culpable. Para probar creé un pequeño archivo php

<?php
   print "hello world";
?>

Para ver si mostraría "hola mundo", que de hecho lo hizo.

PHP ini

Una respuesta me pidió que cambiara a la configuración de PHP.ini. Esto es lo que cambié de los valores predeterminados. Hacer cambios aquí no rectifica los errores.

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

Permisos

Después de verificar la parte correcta de la consola de administración Sistema> Información del sistema> Permisos de directorio, aquí no se enumera ninguna entrada como editable. ¿Necesito editar cada árbol de carpetas? Nuevamente, no creo que configurar 777 en estas carpetas sea una buena idea (o trabajo). Por ejemplo, enumera mi carpeta temporal como no escribible pero parece que tiene los permisos correctos arriba.

También intenté cambiar el propietario del grupo en la carpeta raíz html, por lo que ahora todas las carpetas y archivos tienen Apache como grupo. Ningún cambio hasta ahora.

errores de Apache

Esto es lo que obtengo cuando intento instalar una extensión

[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 gran saludo a @VilleNiemi por su resolución de problemas que me llevó a la ruta de escritura . (Sí, usé write en lugar de right como un juego de palabras). Mis permisos de directorio parecían ser la fuente de mi problema.

Unwritable

Solución si el host está dedictado

Pensé que cambiar el cambio del grupo de root a Apache solucionaría el problema, pero nada cambió. Después de leer otra publicación en Foro de Joomla Vi a alguien cambiar el propietario de las carpetas y archivos. Entonces, después de ejecutar lo siguiente

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

Luego, después de actualizar mi pantalla, veo el color verde nuevamente.

Green is good

Entonces, los archivos en la raíz de mi directorio web están configurados para permisos con 744. Las carpetas con 755 y los archivos en dichas carpetas son 644. Creo que estoy todo listo por ahora.

Instalé con éxito el primer complemento en mi sitio. ¡A las carreras conmigo!

Solución si se comparte host.

Publicará algo más detallado una vez que esté completo, pero una buena lectura proviene de Dionysopoulos que está vinculado en esta respuesta 4 . Habla sobre los problemas de permisos y por qué mi solución de Host dedicada es mala en general y especialmente mala para los proveedores de Host compartidos.

4
Matt

El "archivo no existe" sugiere que Joomla! Error al cargar el archivo. Lo que lleva a que el archivo no se descomprima y los contenidos no se muevan a la carpeta esperada. Lo que significa que la carpeta esperada no existirá.

O bien su PHP tiene un límite de carga demasiado bajo para los archivos en cuestión o su ruta tmp es incorrecta. Si instaló PHP usted mismo, la configuración relevante probablemente todavía están en sus valores predeterminados, que son 2 MB y demasiado pequeños. En php.ini establezca upload_max_filesize y post_max_size a un valor más alto.

Mientras esté en eso, también aumente max_execution_time ya que causa problemas muy molestos si se agota el tiempo en medio de las instalaciones o actualizaciones.

2
Ville Niemi