ftp_mkdir

(PHP 4,PHP 5,PHP 7,PHP 8)

ftp_mkdir创建一个目录

说明

ftp_mkdir(FTP\Connection $ftp, string $directory): string|false

在 FTP 服务器上创立指定 directory

参数

ftp

一个 FTP\Connection 实例。

directory

将被创立的目录名称。

返回值

如果成功,则返回新创建的目录名称;如果出错,则返回 false

错误/异常

如果目录已存在或相关权限阻止创建此目录,则会发出 E_WARNING 级别错误。

变更日志

版本 说明
8.1.0 ftp 参数现在需要一个 FTP\Connection 实例;以前,需要一个 资源

示例

范例#1 ftp_mkdir() 范例

<?php

$dir
= 'www';

// 设置基本连接
$ftp = ftp_connect($ftp_server);

// 使用用户名和加密登录
$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);

// 尝试创建目录 $dir
if (ftp_mkdir($ftp, $dir)) {
echo
"successfully created $dir\n";
} else {
echo
"There was a problem while creating $dir\n";
}

// 关闭连接
ftp_close($ftp);
?>

另请参见

添加注释

用户贡献的注释 5 个注释

PINAR Musa
11 年前
以下是用于创建递归目录的正确代码

<?php

// 函数
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);
}
}
}

// 用法
$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);

?>
vladimir at lukianov dot name
20 年前
更建议使用以下递归函数。
一些 FTP 服务器(例如 WarFTP)在您不从根目录执行
mkdir 操作且路径为相对路径时会变得不正常。
第二个如果其中一个目录(如 '/')已存在,您会收到访问被拒绝的提示。

<?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;
}
?>
butch AT 4RealMedia dot com
17 年前
在尝试使用 ftp_mkdir 或 ftp_chdir 时,我注意到有些服务器像完整路径一样,例如

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

而另一些服务器希望您使用初始登录路径,例如 /sitename/directory/

仅想传递此信息
postmaster at 250union dot community
6 年前
if(!@ftp_chdir($ftpcon, $part)){
ftp_mkdir($ftpcon, $part);
ftp_chdir($ftpcon, $part);
//ftp_chmod($ftpcon, 0777, $part);
}

这是以下答案的一部分,如果您想要有效的 chmod,则需要将其替换为

if(!@ftp_chdir($ftpcon, $part)){
ftp_mkdir($ftpcon, $part);
ftp_chmod($ftpcon, 0777, $part);
ftp_chdir($ftpcon, $part);
}
4alexr at gmail dot com
6 年前
更新且正确的递归目录制作代码

/**
* 递归创建 ftp 目录的函数。
*
* @param $ftpcon ftp 连接资源
* @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 等于 $path,它只能表示此文件夹已存在
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