PHP Conference Japan 2024

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
"成功建立 $dir\n";
} else {
echo
"建立 $dir 時發生問題\n";
}

// 關閉連線
ftp_close($ftp);
?>

另請參閱

新增筆記

使用者貢獻的筆記 4 則筆記

48
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);

?>
1
vladimir at lukianov dot name
20 年前
對於重複呼叫,以下函式效果更好。
某些 FTP 伺服器(例如 WarFTP)在嘗試從非根目錄建立目錄,且路徑為相對路徑時,會出現異常。
第二,如果其中一個目錄(例如'/')已經存在,您將會收到拒絕存取的錯誤。


<?php
函式 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;
}
?>
0
butch AT 4RealMedia dot com
18 年前
當我嘗試使用 ftp_mkdir 或 ftp_chdir 時,我注意到有些伺服器喜歡完整的路徑,例如:

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

而其他伺服器則希望您使用從初始登入開始的路徑,例如 /sitename/directory/

只是想分享一下這個資訊
-1
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);
}
To Top