为什么这个php mkdir/uniqid不工作?

为什么这个php mkdir/uniqid不工作?,php,random,file-upload,mkdir,Php,Random,File Upload,Mkdir,我有一段代码,它应该创建一个随机目录并将上传移动到那里: $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . mkdir( 'assets/post/email_uploads/{uniqid(attachment_)}', 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; 路径assets/post/email\u uploads/已经存在,因此随机文件夹应该

我有一段代码,它应该创建一个随机目录并将上传移动到那里:

$uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . mkdir( 'assets/post/email_uploads/{uniqid(attachment_)}', 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ];
路径
assets/post/email\u uploads/
已经存在,因此随机文件夹应该放在
email\u uploads
中。我面临的问题是如何在
目录分隔符
之间放置内容,让所有内容都正常工作

当我尝试
mkdir('assets/post/email\u uploads/{uniqid(附件)}',0777)

mkdir('assets/post/email_uploads/'.uniqid(attachment_),0777)
-未创建文件夹,上载放在根目录下

当我尝试

$attchmentPath = 'assets/post/email_uploads/';
$uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . $attchmentPath.mkdir( uniqid(attachment_), 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ];


文件夹是在根目录下创建的,而不是在所需路径上创建的,并且文件根本不会上载。

可能是这样的吗?应该引用
uniqid
的内容(除非它是常量),并且需要从单引号字符串中转义对
uniqid
的函数调用

$dir=mkdir( __DIR__ . '/assets/post/email_uploads/'.uniqid('attachment_'), 0777 );
$name=$_FILES['file']['name'];
$uploadPath = $dir . DIRECTORY_SEPARATOR . $name;
您可以尝试使用递归函数来确保目录路径存在

function createpath( $path=NULL, $perm=0644 ) {
    if( !file_exists( $path ) ) {
        createpath( dirname( $path ) );
        mkdir( $path, $perm, TRUE );
        clearstatcache();
    }
    return $path;
}

$targetpath=__DIR__ . '/assets/post/email_uploads/'.uniqid( 'attachment_' );
$path=createpath( $targetpath );
echo $path;

我只需在
mkdir
中添加一个参数-
TRUE
,就解决了这个问题。因此,功能代码是-
mkdir($path,0777,TRUE)
其中
$path
是要创建的目录的路径。

echo'assets/post/email_uploads/{uniqid(附件)}-现在这告诉你什么…?单引号还是双引号??函数调用需要在调用之前转义,如果要分析变量,则变量应该在双引号内-在单引号内,您看到的就是您想要的get@CBroe当我回显它按原样输出时-
assets/post/email_uploads/{uniqid(附件)}
但当我回显
'assets/post/email_uploads/'时。uniqid(附件)
它输出所需的路径,但仍然不会输出work@RamRaider我刚刚用双引号尝试了一下-没有成功我只是尝试了一下-如果你回显
\uuu DIR\uuuuuu.'/assets/post/email\u uploads/”,则未创建
uniqid
文件夹,文件上载到根目录之外。uniqid('attachment_u')
这会产生什么结果?
F:\Projects\xxxxxx\yyyyyy\src/assets/post/email\u uploads/attachment\u 5a5f195cdd9c1
您对该文件夹路径具有写入权限吗?上载的文件位于
F:
处,而随机文件夹未创建
function createpath( $path=NULL, $perm=0644 ) {
    if( !file_exists( $path ) ) {
        createpath( dirname( $path ) );
        mkdir( $path, $perm, TRUE );
        clearstatcache();
    }
    return $path;
}

$targetpath=__DIR__ . '/assets/post/email_uploads/'.uniqid( 'attachment_' );
$path=createpath( $targetpath );
echo $path;