Sí, esto es fácil de hacer.
Hay dos formas principales de evitar que los usuarios accedan a example.txt . La primera es ponerlo en una carpeta fuera de tu carpeta web (generalmente llamada www o public_html ), la segunda es poner un .htaccess archivo en la carpeta con su script example.txt que bloquea el acceso al archivo por completo. El .htaccess se vería como
<files "example.txt">
deny from all
</files>
Pero podrías cambiar example.txt a algo como *.txt si quisieras bloquear todos los .txt archivos en la carpeta.
Entonces puedes usar file_get_contents() en tu readfile.php para obtener el contenido del archivo de texto, o si solo desea generar el archivo, puede usar readfile
Simplemente almacene los archivos que no desea que estén accesibles públicamente fuera de webroot .
/home
example.txt
/www
readfile.php
Si /home/www/ es su carpeta raíz web pública, no se puede acceder a ningún archivo por encima a través del servidor web. readfile.php todavía puede acceder al archivo perfectamente bien en ../example.txt aunque.
Si necesita almacenar los archivos en la raíz web, coloque los archivos en una carpeta y deniegue el acceso a esa carpeta. Si está utilizando apache, cree un archivo .htaccess en la carpeta y escriba deny from all