Php ftp_mkdir():Can';t创建目录:没有这样的文件或目录

Php ftp_mkdir():Can';t创建目录:没有这样的文件或目录,php,ftp,Php,Ftp,我在使用ftp创建远程目录时遇到问题 我收到错误,警告:ftp_mkdir():无法创建目录:没有这样的文件或目录 我正试着这样做 $connection = ftp_connect($hostname) or die('Couldn\'t connect to ftp server'); $login = ftp_login($connection, $username, $password) or die('Couldn\'t log_in to ftp server'); ftp_pas

我在使用ftp创建远程目录时遇到问题

我收到错误,警告:ftp_mkdir():无法创建目录:没有这样的文件或目录

我正试着这样做

$connection = ftp_connect($hostname) or die('Couldn\'t connect to ftp server'); 
$login = ftp_login($connection, $username, $password) or die('Couldn\'t log_in to ftp server');
ftp_pasv($connection, true);
if ($login){echo 'Connected Successfully.';}else{echo 'Cannot connect.';}

$dir = '2014/04/09';



if(!@ftp_chdir($connection, '/public_html/images/'.$dir)){
    $ftp_mkdir = ftp_mkdir($connection, '/public_html/images/'.$dir);
    if($ftp_mkdir){
        echo 'Remote directory created successfully';
    }
    else{
        echo 'Error creating remote directory';
    }
}
else{
        echo 'Remote directory exist';
}
请查看并建议任何可能的方法

谢谢。

在Windows中
*。“/\[]:;|=,
是保留字符,不允许在文件名中使用

对于Linux,我认为它只是
/
\0

/
字符用于遍历Linux中的文件目录,因此禁止将其用作文件名

有关非法文件名的详细信息:

您必须将
/
符号替换为其他符号,例如
-

在重播您的评论时: 创建类似于
images/2014/04/09/image.png的目录

您只需要在服务器上创建文件夹。因此
images/2014/04/09/image.png
是一个名为
image.png
的文件,它位于文件夹
09
中,文件夹
04
中,文件夹
2014
中,文件夹
images


希望生成场景?

也有类似的问题,可以通过一次创建一个文件夹来修复。我无法通过一个命令让ftp\u chdir创建整个路径

因此,要创建这个:

$dir = '2014/04/09';
我必须首先创建:

$dir = '/2014/';
然后:

最后:

$dir = '/2014/04/09/';
然后提交文件“/2014/04/09/image.jpg”


工作起来很有魅力。

不确定您使用的是什么操作系统,但在Windows上,您不能使用带有“/“名称中的字符。@Scott我在windows7上使用linux主机。是的,我认为不允许在文件名中使用该字符。尝试更改
$dir='2014/04/09'
$dir='2014-04-09'@Scott我得到的目录是images/2014-04-09,但问题是我想把目录变成images/2014/04/09/image.png,我该怎么做。仅供参考。。。你说你只需要在服务器上创建文件夹?我必须手动创建文件夹吗?或者我可以使用ftp创建它。您可以。。。但是从外观上看,您正在遵循一些日期命名约定,因此您可能希望自己编写一个PHP脚本来处理这个问题。因此,脚本将获得今天的日期,然后检查是否已经有今年的文件,然后是月,然后是天,如果在这些目录中找不到文件,则创建一个文件。你的意思是说我必须一个接一个地创建这些目录。比如先创建年目录,然后创建月目录,然后创建日期目录,然后创建文件。是的,要获得这样的目录
images/2014/04/09/image.png
,因为文件名不能使用
/
字符。好的,我想我必须使这些目录一个接一个,因为有命名限制。谢谢你花时间解释。
$dir = '/2014/04/09/';