¿Cómo escribir en un archivo en PHP?

108

Tengo este script en un servidor gratuito compatible con PHP:

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

Crea el archivo lidn.txt, pero está vacío.

¿Cómo puedo crear un archivo y escribir algo en él, por ejemplo, la línea "Gatos persiguen ratones"?

brillante
fuente

Respuestas:

153

Puede utilizar una función de nivel superior como:

file_put_contents($filename, $content);

que es idéntico a llamar a fopen(), fwrite()y fclose()sucesivamente para escribir datos en un archivo.

Documentos: file_put_contents

Salvaje
fuente
3
Solo una nota al margen, solo file_put_contents()funciona en PHP5. No parece un problema en este caso (después de todo, su respuesta fue aceptada), pero es posible que todavía haya algunos hosts que ejecuten PHP4.x.
Duroth
2
Una nota al margen muy importante: file_put_contents () es una pesadilla de memoria en comparación con fopen (). Me encanta usarlo, pero cuando maneja archivos grandes, desea poder "transmitir" datos en él. PHP requerirá un gran múltiplo de final como memoria interna, así que téngalo en cuenta al usar esta función. Para cantidades más pequeñas de datos, lo recomendaría por su fácil uso.
John
1
Luego use file_put_contents ($ filename, $ other_stream). Es lo mismo que usar stream_copy_to_stream-), que es muy eficiente en memoria.
Savageman
@Duroth ¿funciona solo en PHP5 o solo funciona desde PHP5? esas son 2 cosas diferentes.
Xsmael
2
@Xsmael No en el pasado lejano de 2009;) PHP7 no existía en ese entonces. Pero sí, put_file_contents()se introdujo por primera vez en PHP5 y se ha incluido desde entonces, también en versiones posteriores.
Duroth
88

Considere fwrite () :

<?php
$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>
sathish
fuente
Puede usar el código anterior y también puede usar file_put_contents para obtener detalles sobre cómo leer y escribir archivos, puede consultar techflirt.com/file-handling-in-php
Ankur Kumar Singh
@sathish después de escribir en el archivo como arriba, ¿cómo leemos el archivo sin cerrar el archivo ( fclose($fp) )? Lo intenté $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');pero ninguno de ellos funcionó
Kasun Siyambalapitiya
10
$text = "Cats chase mice";
$filename = "somefile.txt";
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);

Tu usas fwrite()

limón
fuente
después de escribir en el archivo como arriba, ¿cómo leemos el archivo sin cerrar el archivo ( fclose($fh))? Lo intenté con $fh = fopen('lidn.txt', 'w+');, `$ fh = fopen ('lidn.txt', 'a +'); `pero ninguno de ellos funcionó
Kasun Siyambalapitiya
10

Es fácil escribir un archivo:

$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
Trần Khải Hoàng
fuente
6

Utilizo el siguiente código para escribir archivos en mi directorio web.

write_file.html

<form action="file.php"method="post">
<textarea name="code">Code goes here</textarea>
<input type="submit"value="submit">
</form>

write_file.php

<?php
// strip slashes before putting the form data into target file
$cd = stripslashes($_POST['code']);

// Show the msg, if the code string is empty
if (empty($cd))
    echo "Nothing to write";

// if the code string is not empty then open the target file and put form data in it
else
{
    $file = fopen("demo.php", "w");
    echo fwrite($file, $cd);

    // show a success msg 
    echo "data successfully entered";
    fclose($file);
}
?>

Este es un guión funcional. asegúrese de cambiar la URL en la acción del formulario y el archivo de destino en la función fopen () si desea utilizarlo en su sitio.

Buena suerte.

Amit Verma
fuente
1
Acabo de empezar a escribir php, pero parece que no solo estás escribiendo un archivo de texto, sino que estás escribiendo un archivo de código php en tu servidor, que podría ejecutarse inmediatamente después haciendo referencia a la URL "demo.php". Alguien podría escribir código PHP malicioso en su servidor y ejecutarlo inmediatamente, ¿verdad? Supongo que esto es para que pueda probar sus propios códigos, pero se debe advertir a las personas sobre los riesgos de esta implementación en particular. (Dicho esto, me gusta y lo haré yo mismo)
RufusVS
6

Para escribir en un archivo PHP, debe seguir los siguientes pasos:

  1. Abre el archivo

  2. Escribir en el archivo

  3. Cerrar el archivo

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );
mallikarjun SK
fuente
6

Estos son los pasos:

  1. Abre el archivo
  2. Escribir en el archivo
  3. Cerrar el archivo

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);
usuario10603371
fuente
5

fwrite()es un poco más rápido y file_put_contents(), de todos modos, es solo una envoltura de esos tres métodos, por lo que perdería la sobrecarga. Artículo

file_put_contents (archivo, datos, modo, contexto):

La file_put_contentsescribe una cadena en un archivo.

Esta función sigue estas reglas al acceder a un archivo. Si FILE_USE_INCLUDE_PATH está configurado, verifique la ruta de inclusión para una copia del nombre de archivo. Cree el archivo si no existe, luego abra el archivo y bloquee el archivo si LOCK_EX está configurado y si FILE_APPEND está configurado, muévase al final del archivo. De lo contrario, borre el contenido del archivo. Escriba los datos en el archivo, cierre el archivo y libere los bloqueos. Esta función devuelve el número del carácter escrito en el archivo en caso de éxito, o FALSO en caso de error.

fwrite (archivo, cadena, longitud):

La fwriteescritura en un archivo abierto. La función se detendrá al final del archivo o cuando alcance la longitud especificada, lo que ocurra primero. Esta función devuelve el número de bytes escritos o FALSO en caso de falla.

ANUNCIO
fuente