ftp_mkdir

(PHP 4, PHP 5, PHP 7)

ftp_mkdirTworzy katalog

Opis

ftp_mkdir ( resource $strumień_ftp , string $katalog ) : string

Tworzy podany katalog na serwerze FTP.

Parametry

strumień_ftp

Identyfikator połączenia z serwerem FTP.

katalog

Nazwa katalogu, który ma być stworzony.

Zwracane wartości

Zwraca nazwę nowo stworzonego katalogu, lub FALSE w przypadku błędu.

Przykłady

Przykład #1 Przykład użycia ftp_mkdir()

<?php

$katalog 
'www';

// nawiązanie połączenia
$conn_id ftp_connect($ftp_server);

// logowanie
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);

// próba stworzenia katalogu
if (ftp_mkdir($conn_id$katalog)) {
 echo 
"Pomyślnie stworzono katalog $katalog\n";
} else {
 echo 
"Wystąpiły błędy przy tworzeniu katalogu $katalog\n";
}

// zamknięcie połączenia
ftp_close($conn_id);
?>

Zobacz też:

add a note add a note

User Contributed Notes 5 notes

up
44
PINAR Musa
10 years ago
Here's the correct code for making recursive directories:

<?php

// function
function ftp_mksubdirs($ftpcon,$ftpbasedir,$ftpath){
   @
ftp_chdir($ftpcon, $ftpbasedir); // /var/www/uploads
  
$parts = explode('/',$ftpath); // 2013/06/11/username
  
foreach($parts as $part){
      if(!@
ftp_chdir($ftpcon, $part)){
        
ftp_mkdir($ftpcon, $part);
        
ftp_chdir($ftpcon, $part);
        
//ftp_chmod($ftpcon, 0777, $part);
     
}
   }
}

// usage
$path_of_storage = '/var/www/uploads';
$newftpdir = '2013/06/11/username';

$conn_id = ftp_connect($ftpserver);
ftp_login($conn_id, $login, $pass);
ftp_mksubdirs($conn_id,$path_of_storage,$newftpdir);
ftp_close($conn_id);

?>
up
1
vladimir at lukianov dot name
20 years ago
For recurrent following function work better.
Some ftp servers (like WarFTP) become demented if you'll
try mkdir not from root dir and if path will be relative.
The second if one of dir (like '/') already exist You'll get access denied.

<?php
function MkDir($path)
  {
  
$dir=split("/", $path);
  
$path="";
  
$ret = true;
  
   for (
$i=0;$i<count($dir);$i++)
   {
      
$path.="/".$dir[$i];
       echo
"$path\n";
       if(!@
ftp_chdir($this->conn_id,$path)){
         @
ftp_chdir($this->conn_id,"/");
         if(!@
ftp_mkdir($this->conn_id,$path)){
         
$ret=false;
          break;
         }
       }
   }
   return
$ret;
  }
?>
up
0
postmaster at 250union dot community
5 years ago
if(!@ftp_chdir($ftpcon, $part)){
         ftp_mkdir($ftpcon, $part);
         ftp_chdir($ftpcon, $part);
         //ftp_chmod($ftpcon, 0777, $part);
      }

This if part of answer below, if you want working chmod you need to replace it with:

      if(!@ftp_chdir($ftpcon, $part)){
         ftp_mkdir($ftpcon, $part);
         ftp_chmod($ftpcon, 0777, $part);
         ftp_chdir($ftpcon, $part);
      }
up
0
butch AT 4RealMedia dot com
17 years ago
When trying to user the ftp_mkdir, or ftp_chdir I've noticed that some servers like the entire path such as

/usr/local/home/username/sitename/directory/

and other servers, want you to use the path from the initial login, such as just /sitename/directory/

Just wanted to pass this on
up
-4
4alexr at gmail dot com
6 years ago
Updated and correct code for making recursive directories:

/**
  * A function to create ftp directories recursively.
  *
  * @param     $ftpcon the ftp connection resource
  * @param     $baseDir
  * @param     $path
  * @param int $mode
  * @return bool
  */    
function ftp_mksubdirs($ftpcon, $baseDir, $path, $mode = 0775) {
    $path = dirname($path);

    if ($baseDir !== DIRECTORY_SEPARATOR && strpos($path, $baseDir) !== false) {
        if (empty($path)) {
            // $baseDir equals to $path, it can only mean that this folder already exists
            return false;
        }

        if ($path[0] == DIRECTORY_SEPARATOR) {
            $path = substr($path, 1);
        }
    } else {
        if ($path[0] == DIRECTORY_SEPARATOR) {
            $path = substr($path, 1);
        }
    }

    @ftp_chdir($ftpcon, $baseDir);
    $parts   = explode(DIRECTORY_SEPARATOR, $path);
    $created = [];
    foreach ($parts as $part) {
        if (!@ftp_chdir($ftpcon, $part)) {
            $createdDir = @ftp_mkdir($ftpcon, $part);

            if ($createdDir !== false) {
                ftp_chmod($ftpcon, $mode, $createdDir);
            }

            $created[] = $createdDir;
            @ftp_chdir($ftpcon, $part);
        }
    }

    return !in_array(false, $created);
}
To Top