validar tipo subir subida servidor seguridad restringir raiz para otra llamar indicar ejemplo directorio desde codigo carpeta archivos archivo php file-io folder

tipo - Creando un archivo dentro de una carpeta que aún no existe en php



subir archivos php ejemplo (5)

Quiero que mi script php cree un archivo de salida en una carpeta basada en la fecha. La forma en que hago esto es que se supone que debe obtener el nombre de carpeta / nombre de archivo de un archivo de texto generado por otro programa que no puedo editar.

Entonces el archivo que está capturando los datos se ve así:

data/newfolder/10302008/log_for_Today.txt | 24234234

Solo con varias líneas, solo necesito que el script lo revise línea por línea, tome la carpeta / nombre de archivo y cree un archivo vacío con ese nombre en esa ubicación.

Los directorios son todos 777. Ahora sé cómo crear un nuevo archivo exe vacío en una carpeta pero parece que no se puede encontrar la manera de crear primero la carpeta y luego el exe dentro de ella, ¿alguna idea?



Con

$directories = explode( ''/'', $path );

puede dividir la ruta para obtener nombres de directorio individuales. Luego vaya a través de la matriz y cree los directorios configurando chmod 777. (El usuario del sistema, que ejecuta php debe tener la capacidad de hacerlo).

$file = array_pop( $directories ); $base = ''/my/base/dir''; foreach( $directories as $dir ) { $path = sprintf( ''%s/%s'', $base, $dir ) mkdir( $path ); chmod( $path, 777 ); $base = $path; } // file_put_contents or something similar file_put_contents( sprintf( ''%s/%s'', $base, $file ), $data );

El problema aquí es que no puedes configurar chmod desde tu script php.

Una alternativa podría ser usar FTP. El usuario pasa datos de inicio de sesión FTP a la secuencia de comandos y utiliza la funcionalidad FTP para administrar archivos.

http://www.php.net/FTP


Cree las carpetas que faltan utilizando mkdir (), luego cree el archivo vacío usando touch ().

Puede usar rutas absolutas en ambos casos, lo que significa:

mkdir(''data''); mkdir(''data/newfolder''); mkdir(''data/newfolder/10302008''); touch(''data/newfolder/10302008/log_for_Today.txt'');

si tiene curiosidad acerca de dónde está el punto de partida, será, puede usar getcwd () para indicarle el directorio de trabajo.


if(!file_exists(dirname($file))) mkdir(dirname($file), 0777, true); //do stuff with $file.

Use el tercer parámetro para mkdir () , que lo hace crear directorios recursivamente.


Es un poco tarde pero encontré esta pregunta y tengo una solución para esto, aquí hay un código de ejemplo y funciona bien para mí, sin importar qué tan profundo sea su archivo. Debe cambiar el separador de directorios para las líneas 1 y 3 si lo está ejecutando en el servidor de Windows.

$pathToFile = ''test1/test2/test3/test4/test.txt''; $fileName = basename($pathToFile); $folders = explode(''/'', str_replace(''/'' . $fileName, '''', $pathToFile)); $currentFolder = ''''; foreach ($folders as $folder) { $currentFolder .= $folder . DIRECTORY_SEPARATOR; if (!file_exists($currentFolder)) { mkdir($currentFolder, 0755); } } file_put_contents($pathToFile, ''test'');

Un saludo, Georgi!