Blog de programación, errores, soluciones

mkdir – Creando un directorio con PHP

Para crear un directorio con php tenemos que usar la función mkdir(), está acepta 4 parámetros aunque uno es necesario la sintaxis seria

 mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = FALSE [, resource $context ]]] ) : bool

El código anterior lo copie directamente de la documentación.

La variable $pathname – seria toda la ruta hacia la carpeta a crear

$mode – son los permisos que tendría está carpeta

$recursive es si será recursivo en todos sus subcarpetas y archivos.

Y por último tenemos $context de tipo resource que no lo pienso tocar en este momento. talvez más adelante lo agregue.

La función mkdir nos devolverá un valor booleano en caso de que se cree con éxito el directorio nos devolverá true en caso contrario false.

Algo que tenemos que tener en cuenta al usar esta función es si apache o el servidor que usemos tiene permiso para escribir si no nos dará un error de PHP mkdir: Permission denied problem.

En el caso de linux tendríamos que hacer lo siguiente:

  1. Make sure all files are owned by the Apache group and user. In Ubuntu it is the www-data group and user chown -R www-data:www-data /path/to/webserver/www
  2. Next enabled all members of the www-data group to read and write files chmod -R g+rw /path/to/webserver/www

Hagamos un ejemplo sin permiso:

Primero creare una carpeta para este ejemplo tal cual haría un sitio en mí lamp. Así que ire a mi carpeta /var/www/html y creare una carpeta llamada create_file_con_php.

mkdir create_file_con_php

Dentro de create_file_con_php creare 2 archivos de php solo para mostrar que la carpeta será creada cuando corra el archivo file.php.

En el archivo index.php creare un formulario para crear la carpeta que quiera.

<html>
  <head>
    <title>Crear un directorio o carpeta con PHP</title>
  </head>
  <body>
    <h1>Creacón de directorio o carpeta con php</h1>
    <form action="file.php" method="post">
    <input type="text" name="name" placeholder="nombre de directorio"/>
    <input type="submit" value="submit">
    </form>
  </body>
</html>

Finalmente en el file usare mkdir para crear el directorio

<?php
  error_reporting(E_ALL);
  ini_set("display_errors", 1);
  $result = mkdir($_SERVER['DOCUMENT_ROOT']."/create_file_con_php/".$_POST['name']);
  if(!$reult):
    echo "no pudo crear la carpeta</br>";
    echo $_SERVER['DOCUMENT_ROOT']."/create_file_con_php/".$_POST['name']."</br>";
  else:
    header("Location: index.php");
  endif;
 ?>
mkdir permisson denied

Ahora haremos lo anterior explicado sobre los permisos en linux en mi consola pondré las siguientes lineas y las ejecutare.

sudo chown -R www-data:www-data /var/www/html/create_directory_con_php 
sudo chmod -R g+rw /var/www/html/create_directory_con_php 

En este momento ya debería de andar chequeamos y

Por último si queremos hacer algo más elaborado podemos usar la función file_exists.

Su sintaxis es la siguiente:

file_exists ( string $filename ) : bool

Esta función recibe un string que viene a ser el path o ruta a la carpeta en mí caso seria var/www/html/create_directory_con_php/nombre_de_la carpeta

Obviamente esta función retorna un booleano de si existe o no veamos como quedo el archivo directory

<?php
  error_reporting(E_ALL);
  ini_set("display_errors", 1);

  $path = $_SERVER['DOCUMENT_ROOT']."/create_directory_con_php/".$_POST['name'];

  if(file_exists($path)){
    echo "la carpeta a crear ya existe<br/>";
    echo "<a href=\"index.php\"> <- back</a>";
  }else{

    if(create_directory($path)){
      header("Location: index.php");
    }else{
      echo "no pudo crear la carpeta</br>";
      echo $path."</br>";
    }
  }

  function create_directory($path){
    $result = mkdir($path);
    if(!$result):
      return false;
    else:
      return true;
    endif;
  }

?>
Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.
Last 4 post in same category