RedCallao.com



Retroceder   Hosting Peru - RedCallao - Manuales de hosting cpanel, streaming radio, tv streaming, vps, servidores dedicados > Pre-Venta - Soporte > Hosting

Respuesta
 
LinkBack Herramientas Desplegado

  #1 (permalink)  
Antiguo 06/08/08, 13:25:41
redcallao redcallao Está Desconectado
Administrator
 
Fecha de Ingreso: jun 2008
Mensajes: 7.973
Predeterminado Crear ficheros / directorios desde scripts con nuestros permisos de usuario y grupo

Si necesitamos crear/programar nuestros propios scripts y estos necesitan crear ficheros o directorios deberemos tener en cuenta que con las funciones normales se crearán con el usuario del servidor Web (apache:apache) y esto generará problemas con el modo seguro. Tenemos pues que asegurarnos que los ficheros o directorios generados son de nuestro usuario y grupo , para ello debemos usar las funciones de ftp o wrapper de php . Una vez creados los ficheros o directorios con los permisos de usuario correctos podremos interactuar con ellos directamente o con culquier otro script sin ningún tipo de problemas.

A continuación mostramos una serie de ejemplos y enlaces con mas ejemplos y sintaxis para ayudar a los que no conocen estas funciones :

Crear un directorio (creamos un archivo en php y despues lo ejecutamos en el navegador para que nos cree el directorio indicado) :

Código:
// Ejemplo script para crear directorio al vuelo via web (desde script php) 

// Establecemos los datos de la cuenta de ftp que usaremos para conectar.
$ftp_direccion = "localhost"; // si estuviera este script en un servidor externo poner la ip o dominio 
$ftp_usuario = "usuario";
$ftp_password = "contraseña";

$dir = "prueba"; // establecemos el nombre del directorio que queremos crear

if($ftp=ftp_connect($ftp_direccion)) // Intentamos conectar al ftp
{
    if(ftp_login($ftp,$ftp_usuario,$ftp_password)) // Si conectamos hacemos la autentificación
    {
         // Cambiamos a modo pasivo
        ftp_pasv($ftp, 1);
        // Entramos dentro de public_html que es donde se cran los directorios normalmente
        ftp_chdir($ftp,"/public_html/");
        // Creamos el directorio
        ftp_mkdir($ftp,$dir);
        echo("Direcorio $dir creado correctamente");
        // Cerramos la conexion 
        ftp_close($ftp);
    }
    else // falló la autentificación
    {
        echo "Fallo en la autentificacion";
        exit;
    }
}
else // Error en la conexión mostramos error en pantalla
{
     echo "Error de conexion con el servidor";
     exit;
}

?>  
Primero, en el enctype="multipart/form-data", le decimos que el contenido del formulario será cifrado por partes, esto es necesario para que el manejo de archivos sea más fácil para nuestro script, ya que sería muy díficil poder transmitir de golpe un archivo muy pesado por ejemplo.

Luego viene un campo de tipo hidden, esto último es opcional, pero lo recomiendo para limitar el tamaño del archivo a transmitir, la macro MAX_FILE_SIZE se encargará de esa gestión.

Veamos ahora la contraparte, el archivo recibe.php que es el que se encarga de hacer la conexión FTP mediante PHP.

Nota: Es MUY importante que leas los comentarios del codigo (En naranja) para entender el tutorial

Nota 2 :* Si teneis alojamiento en HyD la ruta seria /public_html/ o /public_html/carpeta/ si nuestro usuario solo tiene un dominio o /domains/dominio.tld/public_html/ o /domains/dominio.tld/public_html/carpeta/ si tenemos varios y queremos especificar uno en concreto

También cambiar :

// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
copy($remoto, $ruta);

por

// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
ftp_put($cid, $ruta, $remoto, FTP_BINARY);


Código:
// Primero creamos un ID de conexión a nuestro servidor
    $cid = ftp_connect("www.cg.edu.mx");
    // Luego creamos un login al mismo con nuestro usuario y contraseña
    $resultado = ftp_login($cid, "usuario","noteladigo");
    // Comprobamos que se creo el Id de conexión y se pudo hacer el login
    if ((!$cid) || (!$resultado)) {
        echo "Fallo en la conexión"; die;
    } else {
        echo "Conectado.";
    }
    // Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
    //servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
    ftp_pasv ($cid, true) ;
    echo "
 Cambio a modo pasivo
";
    // Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
    // esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
    ftp_chdir($cid, "boca");
    echo "Cambiado al directorio necesario";   
    // Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
    // Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
    // el nombre del archivo
    $local = $_FILES["archivo"]["name"];
    // Este es el nombre temporal del archivo mientras dura la transmisión
    $remoto = $_FILES["archivo"]["tmp_name"];
    // El tamaño del archivo
    $tama = $_FILES["archivo"]["size"];
    echo "
$local
";
    echo "$remoto
";
    echo "subiendo el archivo...
";
    // Juntamos la ruta del servidor con el nombre real del archivo
    $ruta = "/srv/www/htdocs/boca/" . $local;
    // Verificamos si no hemos excedido el tamaño del archivo
    if (!$tama<=$_POST["MAX_FILE_SIZE"]){
        echo "Excede el tamaño del archivo...
";
    } else {
        // Verificamos si ya se subio el archivo temporal
        if (is_uploaded_file($remoto)){
            // copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
            copy($remoto, $ruta);        
        }
        // Sino se pudo subir el temporal
        else {
            echo "no se pudo subir el archivo " . $local;
        }
    }
    echo "Ruta: " . $ruta;
    //cerramos la conexión FTP
    ftp_close($cid);
?>  
Mas recursos y ejemplos :

* Uso del FTP con PHP

* PHP teórico: Funciones relacionadas con el protocolo FTP

* Documentación oficial php : PHP: FTP Functions - Manual

* PHP: FTP y FTPS - Manual

Si alguien tiene algún otro ejemplo o script no dude en postearlo, asi como dudas.

Palabras clave : modo seguro , safe mode , permisos de usuario , permisos de grupo , scripts compatibles modo seguro , SAFE MODE Restriction in effect , gid
Responder Con Cita
Respuesta

Tags
foros de php , hosting callao , hosting php , manuales php

Herramientas
Desplegado

Normas de Publicación
You may post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está habilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado




La franja horaria es GMT -5. Ahora son las 02:53:58.


Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.