ERROR: Could not find or create a directory

ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -
Número de respuestas: 11

Como estan,

Bueno, me estuve recorriendo todo el foro y la verdad no encontre algo que se pudiera parecer a este error.

Warning: mkdir(/home/ontareor/upload/66): Permission denied in /home/ontareor/public_html/grace/lib/moodlelib.php on line 2005

ERROR: Could not find or create a directory (/home/ontareor/upload/66)

Básicamente es que no me deja subir archivos cuando creo cursos nuevos, pero los cursos que tengo inscritos si deja subir archivos. Este problema empezó a surgir a partir de la actualización que realice de Moodle recientemente.

Espero me puedan dar alguna pista para dar solución a este problema

Ciao

big grin

Promedio de valoraciones: -
En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Franklin Calle Zapata -
Imagen de Moderadores

Hola Paulo :

Al parecer es un problema de permisos sobre el directorio que vas a usar para descargar la información (crear subdirectorios ..),

coordina con el web master.. o revisa los permisos con el FTp que te han proporcionado..

Salu2

Franklin

En respuesta a Franklin Calle Zapata

Re: ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -

Que tal Franklin..

Gracias por tu pronta respuesta, exactamente cuál es el directorio que tengo que mirar, porque supuestamente no tenía ese problema anteriormente...

Igual el hosting donde se tiene montado no se informa de algún cambio en el FTP, adicionalmente yo lo estoy administrando y no he realizado cambios... que podría ser.. !!!

Gracias por tu valiosa colaboración

approve

En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -

Cordial saludo

Bueno, he estado un poco ocupado, pero hasta el son de hoy empece con las laborares de administración de Moodle, aún sigo con el problema anterior... Que me pueden recomendar ..!!!

Gracias de antemano por su colaboración

approve

En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Franklin Calle Zapata -
Imagen de Moderadores

Hola Paulo :

Por alguna razón está tratando de crear un directorio en un nivel (obviamente los usuarios no tenemos cómo ingresar a esta área, solo administramos del directorio  public_html hacia abajo..)

/home/ontareor/upload/66

fuera del ámbito de moodle

/home/ontareor/public_html/grace/  (tu directorio de moodle se llama : grace y está debajo de public_html, que es el directorio en donde se colocan las aplicaciones web)

Fijate en la función que está dentro del programa : moodlelib.php

=================

function make_upload_directory($directory, $shownotices=true) {
/// $directory = a string of directory names under $CFG->dataroot
/// eg  stuff/assignment/1
/// Returns full directory if successful, false if not

    global $CFG;

    $currdir = $CFG->dataroot;

    umask(0000);

    if (!file_exists($currdir)) {       aquí verifica si no existe ya ese directorio - nivel superior
        if (! mkdir($currdir, $CFG->directorypermissions)) { aquí evalua si lo puede crear
            if ($shownotices) {
                notify("ERROR: You need to create the directory $currdir with web server write access");
            }
            return false;
        }
    }

    $dirarray = explode("/", $directory);

    foreach ($dirarray as $dir) {
        $currdir = "$currdir/$dir";
        if (! file_exists($currdir)) {  aquí verifica si no existe ya ese directorio
            if (! mkdir($currdir, $CFG->directorypermissions)) {  aquí evalua si lo puede crear
                if ($shownotices) {
este es error que te sale : notify("ERROR: Could not find or create a directory ($currdir)");
                }
                return false;
            }
            @chmod($currdir, $CFG->directorypermissions);  // Just in case mkdir didn't do it
        }
    }

    return $currdir;
}

================

Revisa en tu config.php de tu moodle si todo está OK..

//=========================================================================
// 2. WEB SITE LOCATION  esto dependera si es local o esta en un hosting
//=========================================================================

$CFG->wwwroot   = "http://".$_SERVER["HTTP_HOST"]."/grace";

$CFG->wwwroot   = 'http://tudominio.xxx/grace';

Elige uno de los dos o debe de ser algo muy parecido


//=========================================================================
// 3. SERVER FILES LOCATION
//=========================================================================
// Next, specify the full OS directory path to this same location
// Make sure the upper/lower case is correct.  Some examples:
//
//    $CFG->dirroot = 'c:\program files\easyphp\www\moodle';    // Windows
//    $CFG->dirroot = '/var/www/html/moodle';     // Redhat Linux
//    $CFG->dirroot = '/home/example/public_html/moodle'; // Cpanel host

Elige uno de los tres o debe de ser algo muy parecido

$CFG->dirroot   = '/web/htdocs/www.tudominio.xxx/home/grace';

$CFG->dirroot   = '/home/ontareor/public_html/grace';

$CFG->dirroot   = 'D:\xxx\xampp\htdocs\moodle';

//=========================================================================
// 4. DATA FILES LOCATION
//=========================================================================
// Now you need a place where Moodle can save uploaded files.  This
// directory should be readable AND WRITEABLE by the web server user
// (usually 'nobody' or 'apache'), but it should not be accessible
// directly via the web.
//
// - On hosting systems you might need to make sure that your "group" has
//   no permissions at all, but that "others" have full permissions.
//
// - On Windows systems you might specify something like 'c:\moodledata'

Puede haber algo muy similar - solo una de las tres opciones (no se como de llama tu directorio en donde tienes la data de los cursos y lo que envian los docentes y alumnos, asumo que de llama gracedata - el cual debe de tener permisos 777:

$CFG->dataroot  = '/web/htdocs/www.tudominio.xxx/home/moodledata';

$CFG->dataroot  = '/home/ontareor/public_html/gracedata';

$CFG->dataroot  = 'D:\xxx\xampp\htdocs/gracedata';


//=========================================================================
// 5. DATA FILES PERMISSIONS
//=========================================================================
$CFG->directorypermissions = 0777;
================================================

Bueno, una salida .. ortodoxa :

Por otro lado, crea el curso en blanco.. (solo el nombre del curso, y su nombre corto..) y luego con la opción restaurar,, eliges.. : sobre un curso que ya existe y con la opción de borrarlo previamente..) y ya debes de tener tu curso en el portal

Espero que sea de tu utilidad..

Atte.,

Franklin

En respuesta a Franklin Calle Zapata

Re: ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -

Como vas Franklin,

La verdad que si me fué muy valioso tu aporte, estuve revisando toda la configuración  pero persigo con el problema...sad

Lo único raro de la configuración que enviaste fue la opción 4. DATA FILES LOCATION el cuál la tengo asi: $CFG->dataroot  = '/home/ontareor/public_html/update'; esta carpeta es donde aparecen los registro de todos los cursos creados.

la otra opción ortodoxa que me das, no me funciona, pues cuando creo un curso nuevo y lo restauro me aparece el mismo problema

ERROR: Could not find or create a directory (/home/ontareor/upload/57)

Este problema solo lo tengo cuando creo cursos nuevos, por eso va incrementando la variable en la carpeta upload 57, 58 ... etc etc.

Ya realice el backup de la mayoría de cursos, porque mi otra opción (ortodoxa)sería reutilizar los que tengo actualmente... proceso que no quiero realizar... ¿Será que el Moodle tiene una capacidad en la creación de cursos? ¿Cuantos serían los deseados? 

Bueno, agradezco tu gran atención y apoyo, espero me puedas seguir colaborando. Cualquier información estare pendiente desde ya para que me puedas dar alguna sugerencia, porque requiero su publicación lo más pronto posible ya que iniciamos actividades académicas.

Att.,

Alonso Gaona

En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Franklin Calle Zapata -
Imagen de Moderadores

Hola Paulo :

Debes de coordinar con el webmaster de tu hosting, ya que el programa está recepcionando mal la variable : $CFG->dataroot 

deberia de ser /home/ontareor/public_html/update'

y recepciona : /home/ontareor/upload/57

y como está en un nivel superior al directorio del moodle.. es por ello que no tienes permisos de escritura y eso no lo vas a poder dar  tú.

Su estuvo trabajando bien y no hiciste cambios, algo han cambiado en la configuración del apache.. que es lo que estimo, está originando el inconveniente..

Si deseas publicar tu curso con urgencia y si gustas, puedes publicarlo, en el portal de www.innovavirtual.org/moodle_01 (sin costo - es gratuito).. si te animas me avisas para darle categoria de docente a tu cuenta..

Esto hasta que otro moodle, que sepa más,, nos pueda ayudar o los webmaster de tu hosting te ayude a resolver el inconveniente..

Verifica vía FTP que el directorio de tu moodledata : /home/ontareor/public_html/update ( . sea el que está en tu config.php

Paciencia, ya encontraremos la solución

Franklin

En respuesta a Franklin Calle Zapata

Re: ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -

Como vas Franklin,

Bueno al parecer con tanto en la cabeza se me fué mal el nombre de la carpeta, efectivamente lo corrobore con el de la configuración y es $CFG->dataroot  = '/home/ontareor/upload';

La carpeta efectivamente existe y ahi se encuentran almacenados todos los contenidos de los cursos (adiconamente tengo permisos de escritura sobre la carpeta upload vía FTP). Lo curioso del asunto es que guarda el consecutivo del nuevo curso, pero a la hora de agregar un recurso, nunca crea la carpeta en esta dirección.

Si fuera el caso que efectivamente cambiaron la configuración del apache... que se tendría que cambiar si llego a tener contacto con el proveedor de servicio..!!!

Bueno, le estare dando vueltas al asunto, no se si se trate de algun problema cuya solución este en mis narices, o de algún problema serio. Cualquier manito bienvenida sea. approve

Att.,

Alonso Gaona

En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Paulo Alonso Gaona Garcia -

Como estas Franklin,

Funcionó .... big grin ....Valla casi que no, realmente agradezco tu apoyo en el seguimiento de este problema, gracias a tu oportuna y valiosa colaboración me dió luz para revisar de fondo la configuración interna de Moodle. Pero realmente el problema como desde un principio lo planteabas era de permisos de carpeta. (después de largos desvelos pero valió la pena)

Aprovecho para felicitarte por el enorme esfuerzo que realizas en toda la comunidad. Espero seguir en contacto y seguir apoyando en esta gran labor.

Att.,

Alonso Gaona

En respuesta a Paulo Alonso Gaona Garcia

Re: ERROR: Could not find or create a directory

de Franklin Calle Zapata -
Imagen de Moderadores

Hola Paulo :

Resumiendo ...

1. Directorio en el que tienes los datos y archivos de los usuarios (moodledata) :

   /home/ontareor/upload

2.ámbito de moodle

   /home/ontareor/public_html/grace/  (tu directorio de moodle se llama : grace y está debajo

                             de public_html, que es el directorio en donde se colocan las aplicaciones web)

3. Lo que tenias configurado en el config.php :

    $CFG->dataroot   = '/home/ontareor/public_html/update';

4.  lo que debe de estar en el config.php :

     $CFG->dataroot   = '/home/ontareor/upload'; 

5. tienes acceso al directorio (por lo tanto puedes adm. los permisos)  : /home/ontareor/upload (por cuestiones de seguridad se recomienda hacer lo que uds. han hecho... pero implica que el "dueño" del portal tenga acceso a niveles superiores al directorio que normalmente asignan para "trabajar" los portales, aunque es muy raro que los webmaster del servidor lo permitan, también por cuestiones de seguridad, pero bueno, si este es tu caso.. bien)

6. El moodle trabaja OK.. ya que consideraba las variables definidas en el config.php (una de ellas no bien definida : dataroot) y trataba de crear el directorio correctamente, pero no contaba con los permisos del caso : escritura - 777)...

7. No era un inconveniente del apache, no se modificó la configuración del servidor

8. Entonces : Si estuvo trabajando bien, implica que por un hecho casual (casual?), tú o alguien modificó, si querer el config.php ( en la variable : dataroot) y le varió los permisos a la carpeta : /home/ontareor/upload  .. Que pasó? Cómo sucedieron esos cambios ? Quién lo hizo ? Bajo que circunstancias ?  COn que intención hizo los cambios ? Fué casualidad ? Fué intencional ?  Alguién más conoce las claves ?  Tengo un plan de contingencia ?

Queda analizar las causas, para evitar que en lo sucesivo ocurra..

Recomendación : Incrementa tu nivel de seguridad,,un forma es,, sacar una copia de los archivos de configuración del moodle, guardalos en un PC en un directorio con acceso restringido, en el mismo guardes una copia de  BK de la BD y de los Bk de los cursos.. Cambia las claves de acceso de los administradores y tu acceso por FTP..

Que tengas un buen día.

Franklin

En respuesta a Franklin Calle Zapata

Re: ERROR: Could not find or create a directory

de Carro Carretero -
A mi me pasó lo mismo, probé todos sus consejos pero no me daban resultado. Al final era algo tan tonto como que tenía el php en modo seguro (safe mode) en las opciones de configuración del dominio, por lo que php no podía crear directorios.

Es un punto más a revisar. Muchas gracias por su información, que me ayudó mucho.