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_camp= mysql_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*/
$campania= str_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_html= fopen($crear_html,"a+");
$escritura= "$codigo";
$write_html= fwrite($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_html= fopen($crear_html,"a+");
$escritura= "$codigo";
$write_html= fwrite($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_php= fopen($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_php= fwrite($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_ip2c= fopen($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_ip2c= fwrite($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"