[SOLUCIONADO] Problema en guardar variables en php

Iniciado por xhc1, Mayo 27, 2017, 04:55:31 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 27, 2017, 04:55:31 PM Ultima modificación: Mayo 30, 2017, 06:49:16 PM por xyz
hola!

tengo este problema que me arroja mi codigo de php, quiero guardar los datos obtenidos en un fichero, pero parece increible como me arroja ese error no entiendo, me pueden ayudar :(

El error es el siguiente
Citar
Warning: fopen(/home/xc/resource.txt): failed to open stream: Permission denied in /var/www/html/AAa/env.php on line 21

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/AAa/env.php on line 22

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/AAa/env.php on line 23

Código: php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Facebook</title>
</head>

<body>
<?php

$Nombre = $_GET['nombre'];
$Email = $_GET['email'];

if ($Nombre=='' || $Email==''){

echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{
    $cv = fopen("/home/xhc1/resource.txt", "a");
    #coloco resource.txt , tambien coloco var/www/html/resource.txt y nada -.- detesto php -.-
    fwrite($cv, "$Nombre");
    fclose($cv);


   
}

?>
</body>
</html>


Gracias de ante mano soy muy torpe aveses con php

Lo que sucede, al parecer es un simple problemas con los permisos sobre los ficheros.
Puedes intentar con el viejo CHMOD

Código: php
chmod 755  /var/www/html/AAa/env.php


o si eres mas extremo

Código: php
chmod 755 -R var/*


Intenta y me dices como te fue
Saludos
rreedd

nada ya habia dado permisos, hasta lo volvi hacer :(

El problema no es con los permisos del archivo php que estas ejecutando si no con el permiso del archivo que estas abriendo en el fopen.
Te lo dice creo que bastante claro el mensaje de error:

el problema es con este archivo: "/home/xc/resource.txt"

Mueve el resource.txt a la carpeta donde tienes el resto del sistema web y dale privilegios para que lo pueda abrir el usuario que ejecuta el servidor apache:

Mayormente, muevelo a /var/www/html/AAa y haz un chmod o chown para que lo pueda acceder el usuario que ejecuta el programa servidor, normalmente apache.

Tambien puedes cambiarle los permisos al archivo en tu ruta "/home/xc/resource.txt" para que el usuario que ejecuta el servidor pueda leerlo.
Si optas por esa accion y tienes el apparmor activado no te dejara. El apparmor se encarga de que ciertas herramientas no se escapen de las rutas correctas como medida de seguridad.
Si tienes ese problema, desactiva o configura apparmor para que deje acceder al apache o httpd a las carpetas de home, o desactiva el apparmor para el httpd o apache.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

Mí bro eso es permisos de apache, seguro en el httpd.conf verás un

Código: xml
<Directory />
    AllowOverride none
    Require all denied
</Directory>


eso te impide acceder a ese directorio /home

si quieres hacer eso, entonces agregales este parametro:

Código: xml
<Directory /home/xc>
    AllowOverride All
    Require all granted
</Directory>


y listo eso te lo permitiría... mala práctica para un server en prod, peeeero si es por prueba y conocimiento ahí tienes :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Estoy casi seguro de que es tema de permisos.

Comprueba que tenga permisos el PHP, la carpeta donde esté ese PHP y el txt (resource.txt)

Con eso debería de funcionar.

Un saludo.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mí bro eso es permisos de apache, seguro en el httpd.conf verás un

Código: xml
<Directory />
    AllowOverride none
    Require all denied
</Directory>


eso te impide acceder a ese directorio /home

si quieres hacer eso, entonces agregales este parametro:

Código: xml
<Directory /home/xc>
    AllowOverride All
    Require all granted
</Directory>


y listo eso te lo permitiría... mala práctica para un server en prod, peeeero si es por prueba y conocimiento ahí tienes :)

Segun lo que se ve, yo creo que el acceso lo hace en el php, no es un problema de acceso de la ruta del apache, luego no es problema de configuracion de apache. Es un problema de acceso al fichero que intenta abrir en la funcion del php fopen. Luego tampoco es un problema de permisos en el propio .php si no en el archivo que pone dentro del fopen. Osea que el script de php no puede abrir el archivo que se deseea abrir.
O bien se soluciona con un chmod para que el usuario que ejecuta el apache pueda acceder o el apparmor esta dando el coñazo y no permite salir del sandbox al php y hay que cambiar la configuracion del apparmor.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

Gracias, este tema ya lo pueden cerrar, lo que hize fue lo siguiente: arme con python una funcion que cuando alguien asignara su nombre y email, al fichero. Python lo almacenara en una base de datos sqlite3, de esta manera me salte esa falla que al fin de cuentas no se que era pero tampoco me voy a dejar ganar xD. Si quieren hago un post respecto al ichero python, claro si estan interesados!!

Saludos!!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias, este tema ya lo pueden cerrar, lo que hize fue lo siguiente: arme con python una funcion que cuando alguien asignara su nombre y email, al fichero. Python lo almacenara en una base de datos sqlite3, de esta manera me salte esa falla que al fin de cuentas no se que era pero tampoco me voy a dejar ganar xD. Si quieren hago un post respecto al ichero python, claro si estan interesados!!

Saludos!!

Sería una excelente idea, por ahí otro forero puede tener la misma inquietud y con tu solución le es útil.

Anímate a postear aquí la solución.

Saludos !