porque no podre escribir en archivos con php?

Iniciado por Belial & Grimoire, 26 Agosto 2012, 17:39 PM

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

Belial & Grimoire

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 (php) [Seleccionar]
<?php
$file 
"path.txt";
if(
file_exists($file)){
echo(
"el archivo existe");
}
if(@
chmod($file0777) == 0){
echo(
" tiene permisos");
}
if((
is_writable($file) && is_readable($file)) == 0){
echo(
" escritura y lectura");
}
if((
$fp fopen($file"a+")) == 0){
echo(
"archivo abierto");
}
$txt "hola\n";
if((
fwrite($fp$txt)) == 0){
echo(
"archivo escrito");
}
fclose($fp);

?>
.                                 

#!drvy

#1
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

Belial & Grimoire

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?
.                                 

#!drvy

Te digo que es por los ==0  :xD

Veras, la funcion is_readable() por ejemplo.

Tu la llamas y la dices asi:

Código (php) [Seleccionar]
if(is_readable($file) ==0){
echo 'lectura';
}
}


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 (php) [Seleccionar]
<?php
$file 
"path.txt";
if(
file_exists($file)){
echo(
"el archivo existe <br />");
}
if(@
chmod($file0777)){
echo(
" tiene permisos <br />");
}
if((
is_writable($file) && is_readable($file))){
echo(
" escritura y lectura <br />");
}
if((
$fp fopen($file"a+"))){
echo(
"archivo abierto <br />");
}
$txt "hola\n";
if((
fwrite($fp$txt))){
echo(
"archivo escrito <br />");
}
fclose($fp);

?>


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

Belial & Grimoire

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:
.                                 

Belial & Grimoire

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?
.                                 

#!drvy

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

Belial & Grimoire


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

.                                 

Belial & Grimoire

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
.                                 

Belial & Grimoire

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?
.