Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2013, 17:45
Avatar de alette666
alette666
 
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 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.