Foros del Web » Programando para Internet » PHP »

problemas de permisos al crear carpetas y archivos con mkdir (en el server)

Estas en el tema de problemas de permisos al crear carpetas y archivos con mkdir (en el server) en el foro de PHP en Foros del Web. Hola gente, tengo problemas con los permisos de creación/escritura/apertura/edición desde el hosting. El asunto es así, como mi proyecto lo realice desde localhost (con xaamp); ...
  #1 (permalink)  
Antiguo 22/11/2013, 17:45
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 2 meses
Puntos: 5
Pregunta problemas de permisos al crear carpetas y archivos con mkdir (en el server)

Hola gente, tengo problemas con los permisos de creación/escritura/apertura/edición desde el hosting.
El asunto es así, como mi proyecto lo realice desde localhost (con xaamp); al usar el comando "mkdir()" con windows no se necesita los permisos ya q trabaja de otra forma. Pero el asunto es cuando debo subirlo a mi hosting; ejecuto la url con formulario para crear el nombre de la carpeta y sus sub-carpetas + el archivo, me aparece lo siguiente:
Código:
Warning: mkdir() [function.mkdir]: Permission denied in /home/elrinco1/public_html/ads_rotator/network/add.php on line 76

Warning: fopen(campanias/chile/234x60/7-tara_vidente.html) [function.fopen]: failed to open stream: Permission denied in /home/elrinco1/public_html/ads_rotator/network/add.php on line 78

Warning: fwrite(): supplied argument is not a valid stream resource in /home/elrinco1/public_html/ads_rotator/network/add.php on line 80

Warning: fclose(): supplied argument is not a valid stream resource in /home/elrinco1/public_html/ads_rotator/network/add.php on line 81
Como verán, ese "warning" me aparece porque la carpeta "campanias" no tiene los permisos; ustedes me dirán "Y porque no le das chmod 0777 desde el ftp?"; RESP: "Porque tanto la carpeta "campanias", "pais", "formato" y "archivo.html" aun no existen; se crean dinamicamente desde el add.php cada vez q el usuario crea y lo registra en la base de datos.

este es mi codigo en el add.php

Código PHP:
<?php 
require('config/connect.php');
if(isset(
$_POST['publicar'])){
/**/
ACA ESTAN LAS VARIABLES Q VIENEN DEL FORMULARIO
/**/
        
        
$SQL"INSERT INTO $Name_tabla2 (camp, f_des, f_has, pais, tipo, formato, ads) VALUES ('$camp', '$fecha_d', '$fecha_h', '$pais', '$tipo', '$formato', '$codigo')";
            if (
mysql_query($SQL)){
                
$id_campmysql_insert_id($connect);
            }else{
                echo 
"<h4 class='alert_error'>ERROR!!: Error al intentar obtener el ID de la Base de Datos!!</h4>";
            }
        
/**/
        /*Desde este punto comenzamos a generar los registros*/
        /*que se guardaran dinamicamente en nuestro servidor*/
        /**/
    
        /*REEMPLAZAMOS ESPACIOS POR GUION BAJO, CREAMOS LA CARPETA Y LOS ARCHIVOS*/
        /*DINAMICAMENTE AL SERVIDOR. GENERAMOS UN PHP PARA RANDONIZAR LOS HTML DEL DIRECTORIO ACTUAL*/
        
$campaniastr_replace(" ""_"$camp);
        
$tam1 '120x600'$tam2 '160x600'$tam3 '180x150';
        
$tam4 '234x60'$tam5 '250x250'$tam6 '300x250';
        
$tam7 '468x60'$tam8 '728x90'$tam9 '980x90';
        if (
$formato == $tam1){
            
$format$tam1$tam_w'120'$tam_h'600';
        }elseif
            (
$formato == $tam2){
            
$format $tam2$tam_w'160'$tam_h '600';
        }elseif
            (
$formato == $tam3){
            
$format $tam3$tam_w'180'$tam_h '150';
        }elseif
            (
$formato == $tam4){
            
$format $tam4$tam_w'234'$tam_h '60';
        }elseif
            (
$formato == $tam5){
            
$format $tam5$tam_w'250'$tam_h '250';
        }elseif
            (
$formato == $tam6){
            
$format $tam6$tam_w'300'$tam_h '250';
        }elseif
            (
$formato == $tam7){
            
$format $tam7$tam_w'468'$tam_h '60';
        }elseif
            (
$formato == $tam8){
            
$format $tam8$tam_w'728'$tam_h '90';
        }else{
            
$format $tam9$tam_w'980'$tam_h '90';            
        }
//Fin del If Else
        
$crear_dir_camp'campanias';
        
$crear_dir$crear_dir_camp.'/'.$_POST['pais'].'/'.$format;

        if (
file_exists($crear_dir)){
        
//SI EXISTE, ENTONCES CREAMOS SOLAMENTE LOS HTML
            
            /*chmod ("$crear_dir/", 0777);*/
            
            
$crear_html"$crear_dir/$id_camp-$campania.html";
            
$abrir_htmlfopen($crear_html,"a+");
            
$escritura"$codigo";
            
$write_htmlfwrite($abrir_html,$escritura);
            
fclose($abrir_html);
            
/*Con el codigo siguiente almacenamos la URL absoluta y virtual del html*/
            
$url_html$_SERVER['DOCUMENT_ROOT'].'/ads_rotator/'.$crear_dir.'/'.$id_camp.'-'.$campania.'.html';
            
$url_html_vir'http://'.$_SERVER['HTTP_HOST'].'/ads_rotator/'.$crear_dir.'/'.$id_camp.'-'.$campania.'.html';        
        }else{
        
//SI NO EXISTE, ENTONCES CREAMOS LA CARPETA Y LOS HTML
            
            /*chmod ("$crear_dir_camp/", 0777);
            chmod ("$crear_dir/", 0777);
            chmod ("$crear_dir/$id_camp-$campania.html", 0777);
            chmod ("$crear_dir/random.php", 0777);*/
            
            
if (!mkdir($crear_dir,0777,true)){}
            
$crear_html"$crear_dir/$id_camp-$campania.html";
            
$abrir_htmlfopen($crear_html,"a+");
            
$escritura"$codigo";
            
$write_htmlfwrite($abrir_html,$escritura);
            
fclose($abrir_html);
            
/*Con el codigo siguiente almacenamos la URL absoluta y virtual del html, del PHP y la incrustacion*/
            
$url_html$_SERVER['DOCUMENT_ROOT'].'/ads_rotator/'.$crear_dir.'/'.$id_camp.'-'.$campania.'.html';
            
$url_html_vir'http://'.$_SERVER['HTTP_HOST'].'/ads_rotator/'.$crear_dir.'/'.$id_camp.'-'.$campania.'.html';
            
$url_rand$_SERVER['DOCUMENT_ROOT'].'/ads_rotator/'.$crear_dir.'/random.php';
            
$url_rand_vir'http://'.$_SERVER['HTTP_HOST'].'/ads_rotator/'.$crear_dir.'/random.php';
            
/**/
            
$crear_php"$crear_dir/random.php";
            
$abrir_phpfopen($crear_php,"a+");
            
$escritura_p=
                
'<?php
                $carpeta= ".";
                $dir= opendir($carpeta);
                while ($archivo= readdir($dir)){
                    if ($archivo!= "." && $archivo!= ".." && $archivo!= "random.php"){
                        $directorio[]= $archivo;
                    }//Fin del If
                }//Fin del While
                if (!isset($_SESSION["campanias"]) || count($_SESSION["campanias"]) == count($directorio)){
                    $_SESSION["campanias"]= array();
                    }do{
                        $camp_aleatoria= array_rand($directorio);
                }//Fin del If
                while (in_array($camp_aleatoria,$_SESSION["campanias"]));
                $_SESSION["campanias"]= $camp_aleatoria;
                echo "<iframe width=\''
.$tam_w.'\' height=\''.$tam_h.'\' frameborder=\'0\' scrolling=\'no\' allowtransparency=\'true\' src=".$directorio[$camp_aleatoria]." hspace=\'2\' vspace=\'2\' marginheight=\'1\' marginwidth=\'1\'></iframe>";                
                ?>'
;
            
$write_phpfwrite($abrir_php,$escritura_p);
            
fclose($abrir_php);
            
            
$SQL3"INSERT INTO $Name_tabla4 (pais, formato, url_rand, url_rand_vir) VALUES ('$pais', '$formato', '$url_rand', '$url_rand_vir')";
            
mysql_query($SQL3);
        }
//Fin del If (creacion de carpeta)
        
        /**/
        
$crear_dir_ip2c'ip2c_rand';
        
$crear_rand_ip2c$crear_dir_ip2c.'/'.$format;
        
        if (
file_exists($crear_rand_ip2c)){
        
//SI EXISTE, ENTONCES CREAMOS SOLAMENTE LOS PHP
        /*No hacemos nada, ya que las carpetas estan creadas*/
        
}else{
        
//SI NO EXISTE, ENTONCES CREAMOS LA CARPETA Y LOS PHP
            
            /*chmod ("$crear_dir_ip2/", 0777);
            chmod ("$crear_rand_ip2c/", 0777);
            chmod ("$crear_rand_ip2c/random.php", 0777);*/
            
            
if (!mkdir($crear_rand_ip2c,0777,true)){}
            
$crear_php_ip2c"$crear_rand_ip2c/random.php";
            
$abrir_php_ip2cfopen($crear_php_ip2c,"a+");
            
$escritura_ip2c=
                
'<?php
                require_once("../../config/connect.php");
                $ip = $_SERVER["REMOTE_ADDR"];
                /* transformacion de la IP */
                $dotted = preg_split( "/[.]+/", $ip);
                $ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
                $la_visita = "SELECT COUNTRY_NAME FROM $Name_tabla5 WHERE $ip2 BETWEEN IP_FROM AND IP_TO";
                $res1 = mysql_query($la_visita);
                $row = mysql_fetch_array($res1);
                /*Rescatamos la variable de la primer consulta*/
                $pais_visita= $row[\'COUNTRY_NAME\'];
                /*La comparamos con el campo de nombres para verificar*/
                /*que el usuario es del pais recidente*/
                $verifica= "SELECT * FROM $Name_tabla5 WHERE COUNTRY_NAME=\'$pais_visita\'";
                $res2= mysql_query($verifica);
                $fila= mysql_fetch_array($res2);
                /*Rescatamos la variable de la segunda consulta*/
                $visitante= $fila[\'COUNTRY_NAME\'];
                /*Comparamos ambos resultados*/
                if ($pais_visita == $visitante){
                    $carpeta="'
.$formato.'";
                    $CONSULTA= "SELECT * FROM $Name_tabla4 WHERE pais=\'$visitante\'";
                    $query= mysql_query($CONSULTA);
                    while ($ip_ads= mysql_fetch_array($query)){
                        if ($carpeta == $ip_ads[\'formato\']){
                            echo "<iframe width=\''
.$tam_w.'\' height=\''.$tam_h.'\' frameborder=\'0\' scrolling=\'no\' allowtransparency=\'true\' src=".$ip_ads[\'url_rand_vir\']." hspace=\'2\' vspace=\'2\' marginheight=\'1\' marginwidth=\'1\'></iframe>";
                        }
                    }
                }else{
                    echo "<center>PUBLICIDAD NO DISPONIBLE!!</center>";
                }            
                ?>'
;
                
$write_php_ip2cfwrite($abrir_php_ip2c,$escritura_ip2c);
                
fclose($abrir_php_ip2c);
                
/*Con el codigo siguiente almacenamos la URL absoluta y virtual del PHP*/
                
$url_rand_ip2c$_SERVER['DOCUMENT_ROOT'].'/ads_rotator/'.$crear_rand_ip2c.'/random.php';
                
$url_rand_ip2c_vir'http://'.$_SERVER['HTTP_HOST'].'/ads_rotator/'.$crear_rand_ip2c.'/random.php';
                
                
$SQL6"INSERT INTO $Name_tabla6 (formato, url_rand_ip2c, url_rand_ip2c_vir) VALUES ('$formato', '$url_rand_ip2c', '$url_rand_ip2c_vir')";
                
mysql_query($SQL6);
        }
//Fin del If (creacion de carpeta)
                    
        
$SQL2"INSERT INTO $Name_tabla3 (campania, url_camp, url_html_vir) VALUES ('$camp', '$url_html', '$url_html_vir')";
        
mysql_query($SQL2);    
        
mysql_close($connect);
        echo
"<h4 class='mensaje alert_success'>El bloque publicitario se agregó Exitosamente!!!</h4>";                                            
}
//Fin del If Isset
?>
Ahi arriba deshabilite el "chmod" para q vean q con esa funcion tmb intente probar si me daba los privilegios a las carpetas anidadas, pero me arroja el mismo error al intentar agregar el registro.
ALGO IMPORTANTE: Los registros se insertan en la base de datos con normalidad, solo me falta los permisos para poder crear los directorios y archivos dinamicamente en el servidor!!

Probe con
Código PHP:
<?php
chmod 
("$crear_dir/"0777);
chmod ("$crear_dir/$id_camp-$campania.html"0777);
?>
Código PHP:
<?php
mkdir
($crear_dir,0777,true)
?>
Y nada; siempre el dicho y la chorrera de "WARNING"
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 22/11/2013, 17:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

Los permisos debes aplicarlos a la carpeta dónde vas a crear los archivos/carpetas, no precisamente cuando los vas creando.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/11/2013, 17:57
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

Cita:
Iniciado por pateketrueke Ver Mensaje
Los permisos debes aplicarlos a la carpeta dónde vas a crear los archivos/carpetas, no precisamente cuando los vas creando.
Mi honorable pequeño saltamonte SAN pateke ; es que la carpeta "campanias" no se crea manualmente, sino desde el php (por unica vez); o sea, que me dices que le de el permiso a "campanias"?? pero como lo hago si aun no la ha creado el add.php
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 22/11/2013, 17:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

¿Te explico más lento?

No debes aplicar permisos a las carpetas que aún no existen, ese no es el problema.

El punto es que estás creando carpetas/archivos en alguna otra ubicación que no tiene permisos suficientes.

Es esa ubicación la que importa, no otra.

Eso, o la carpeta dónde estás ejecutando todo tampoco tiene permisos, eso es aparte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 22/11/2013, 18:38
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Te explico más lento?

No debes aplicar permisos a las carpetas que aún no existen, ese no es el problema.

El punto es que estás creando carpetas/archivos en alguna otra ubicación que no tiene permisos suficientes.

Es esa ubicación la que importa, no otra.

Eso, o la carpeta dónde estás ejecutando todo tampoco tiene permisos, eso es aparte.
ahhhhhhhhhhhh le tengo que dar tmb permisos a "network" (y los archivos que van a interactuar y a procesar?? :lol:
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #6 (permalink)  
Antiguo 23/11/2013, 05:53
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

Yo pienso que la ruta donde se almacenan los datos deben tener permisos para que ese usuario que usas para subir archivos por FTP tenga los permisos necesarios en cada una de las carpetas para poder escribir los cambios.

Creo que dando el permiso necesario a tu carpeta network o anteriores valdría.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #7 (permalink)  
Antiguo 23/11/2013, 20:00
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: problemas de permisos al crear carpetas y archivos con mkdir (en el server

Cita:
Iniciado por HackID1 Ver Mensaje
Yo pienso que la ruta donde se almacenan los datos deben tener permisos para que ese usuario que usas para subir archivos por FTP tenga los permisos necesarios en cada una de las carpetas para poder escribir los cambios.

Creo que dando el permiso necesario a tu carpeta network o anteriores valdría.
Es raro, xq le puse (le agregue) la url absoluta de dnd esta el archivo a tratar; y lo gracioso es que los creo; pero aun asi me aparece ahora el
Código:
Warning: fwrite(): supplied argument is not a valid stream resource in /home/elrinco1/public_html/ads_rotator/network/add.php on line 84

Warning: fwrite(): supplied argument is not a valid stream resource in /home/elrinco1/public_html/ads_rotator/network/add.php on line 112
O sea, que ahora el error lo reducio a ese punto.
Le agregue la url absoluta como lo hice con los anteriores fopen(), fwrite(), fclose() y me sigue apareciendo ese warning; pero como dije antes: "los directorios y archivos los creo normalmente :(
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.

Etiquetas: mkdir(), permisos, warning
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.