function site_mkdir($dir)
{
if (is_dir($_SERVER['DOCUMENT_ROOT'] . '/' . $dir))
{
return(true);
}
if (!$ftp_connection = ftp_connect('ftp.server'))
{
return(false);
}
if (!ftp_login($ftp_connection, 'user', 'password'))
{
return(false);
}
if (!ftp_chdir($ftp_connection, 'httpdocs'))
{
return(false);
}
$dir_list = explode('/', $dir);
foreach ($dir_list as $current)
{
if ($current != '')
{
if (!@ftp_chdir($ftp_connection, $current))
{
if (!ftp_mkdir($ftp_connection, $current))
{
ftp_close($ftp_connection);
return(false);
}
else
{
ftp_site($ftp_connection, 'CHMOD 0777 '.$current);
ftp_chdir($ftp_connection, $current);
}
}
}
}
ftp_close($ftp_connection);
return(true);
}It does this:
- check if the dir to create already exists; if it does, simply quit, otherwise continue
- login to my ftp server (same server as the script is running on)
- change to the base dir ($dir will use this as a base reference)
- split up $dir and walk through the list
- check if dir exists
- if not, create it
- if not, chmod it to 0777
- if exists, just continue
- closes connection
Speed is a little slower then I wanted. But when dir allready exists there is no real speed difference. So I 'solved' the speed problem by creating the dirs when I know they will be needed in the future, rather than creating them at the moment I need them.
This is very helpful in making FTP username and password in PHP without getting any permission problem in making directories via script on Linux and Unix machine. I am learning so much from this.
ReplyDelete