Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Belial & Grimoire en 26 Agosto 2012, 17:39 pm



Título: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 26 Agosto 2012, 17:39 pm
hola

alguien sabe porque razon no puedo escribir en archivos con php?, hice este codigo para ver si tenia algun error, pero al parecer todo va bien, y no me explico porque cuando reviso el archivo "path.txt", no contiene nada, lo estoy haciendo en un servidor local con apache y sistema linux

Código
  1. <?php
  2. $file = "path.txt";
  3. if(file_exists($file)){
  4. echo("el archivo existe");
  5. }
  6. if(@chmod($file, 0777) == 0){
  7. echo(" tiene permisos");
  8. }
  9. if((is_writable($file) && is_readable($file)) == 0){
  10. echo(" escritura y lectura");
  11. }
  12. if(($fp = fopen($file, "a+")) == 0){
  13. echo("archivo abierto");
  14. }
  15. $txt = "hola\n";
  16. if((fwrite($fp, $txt)) == 0){
  17. echo("archivo escrito");
  18. }
  19. fclose($fp);
  20.  
  21. ?>


Título: Re: porque no podre escribir en archivos con php?
Publicado por: #!drvy en 26 Agosto 2012, 18:20 pm
Porque le pones ==0 a todo ? xD
Con tal de que pongas if(funcion()) esta te devolverá true, false o data...

Quita los ==0 y la @ de chmod. Ademas asegúrate de que php tiene configurado el mostrar errores.

Saludos


Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 26 Agosto 2012, 18:53 pm
jeje viejas costumbres de programacion C  :P

pero lo que no entiendo es, porque no escribe, todos los echo que puse, me aparecen como true, pero al final no tiene nada el archivo path.txt

tambien ya le di permisos desde la consola de linux, que mas podria ser?


Título: Re: porque no podre escribir en archivos con php?
Publicado por: #!drvy en 26 Agosto 2012, 18:59 pm
Te digo que es por los ==0  :xD

Veras, la funcion is_readable() por ejemplo.

Tu la llamas y la dices asi:

Código
  1. if(is_readable($file) ==0){
  2. echo 'lectura';
  3. }
  4. }

Guay, pero 0 no es true. 0 es false. PHP dirá, vale voy a mirar si puedo leer este archivo, lo intenta... no puede y te devuelve false. Y tu con el if le indicas que si la función is_readable devuelve 0 que muestre "lectura"... en realidad te esta devolviendo false no true.

Entonces la manera correcta de hacerlo es:
Código
  1. <?php
  2. $file = "path.txt";
  3. if(file_exists($file)){
  4. echo("el archivo existe <br />");
  5. }
  6. if(@chmod($file, 0777)){
  7. echo(" tiene permisos <br />");
  8. }
  9. if((is_writable($file) && is_readable($file))){
  10. echo(" escritura y lectura <br />");
  11. }
  12. if(($fp = fopen($file, "a+"))){
  13. echo("archivo abierto <br />");
  14. }
  15. $txt = "hola\n";
  16. if((fwrite($fp, $txt))){
  17. echo("archivo escrito <br />");
  18. }
  19. fclose($fp);
  20.  
  21. ?>

He añadido los <br /> para marcar una nueva linea...
Saludos


Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 26 Agosto 2012, 19:57 pm
a ok gracias por la explicacion

pues ya quite los "==0" y el "@"

busque en php.ini y esta activado display_errors

pero sigue sin escribir nada en el archivo path.txt y no me muestra errores  :huh:


Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 26 Agosto 2012, 20:01 pm
ya logre que me muestre los mensajes... tenia que reiniciar httpd

y me muestra esto

el archivo existe

Warning: chmod(): Permission denied in /var/www/html/phishing/phi.php on line 9

Warning: fopen(pass.txt): failed to open stream: Permission denied in /var/www/html/phishing/phi.php on line 15

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/phishing/phi.php on line 19

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/phishing/phi.php on line 22

ya le di permisos a toda la carpeta www pero ni asi funciona, que puedo hacer?


Título: Re: porque no podre escribir en archivos con php?
Publicado por: #!drvy en 26 Agosto 2012, 22:18 pm
Como has dado permisos a la carpeta ?

La manera que debería funcionarte es desde un terminal, sudo chmod o+w Nombre_carpeta.

También esta el hecho de poner a PHP (no apache.) y a tu usuario en un grupo con los permisos necesarios 0755.


Saludos


Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 27 Agosto 2012, 04:28 am

le puse permisos a toda la carpeta www desde root

#chmod -R 777 www

y al analizar las propiedades de la carpeta tengo en todo, escritura y lectura, tambien verifique las propiedades de los archivos y tambien tienen lectura y escritura, root, usuario y grupo



Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 28 Agosto 2012, 06:01 am
hola

nadie tiene alguna idea de que podria hacer, ya google e intente de todo lo que encontraba pero nada

o habra algun servidor como XAMPP o variante con el que no tenga problemas de permisos?, espero me puedan ayudar

salu2


Título: Re: porque no podre escribir en archivos con php?
Publicado por: Belial & Grimoire en 28 Agosto 2012, 06:28 am
Creo ya lo logre al parecer tenia que desactivar SElinux

 SELinux (setenforce 0)

solo que ahora me aparece

Warning: chmod(): Operation not permitted

pero ya funciona todo lo demas

me podrian decir porque chmod no esta permitido?


Título: Re: porque no podre escribir en archivos con php?
Publicado por: RevangelyonX en 28 Agosto 2012, 11:51 am
Hola,

Quizá te sea de ayuda esto:

chmod 711 /home/marc
chmod 755 /home/marc/public_html
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t /home/marc/public_html
service httpd restart


Está en el siguiente enlace:
http://forums.fedoraforum.org/archive/index.php/t-240075.html