我有下面的代码在PHP 5.2.4(无safe_mode设置)Linux服务器:
mkdir( $path, 0777, true );
当我进入的路径,如:
'/path/to/create/recur/ively/'
除了最后一个创建的所有目录......当我添加其他目录,如:
'/path/to/create/recur/ively/more/'
再次,是除了最后一个创建的所有路径...
尝试带或不带尾随斜杠
可以ANY1开导我在这里吗?
我有下面的代码在PHP 5.2.4(无safe_mode设置)Linux服务器:
mkdir( $path, 0777, true );
当我进入的路径,如:
'/path/to/create/recur/ively/'
除了最后一个创建的所有目录......当我添加其他目录,如:
'/path/to/create/recur/ively/more/'
再次,是除了最后一个创建的所有路径...
尝试带或不带尾随斜杠
可以ANY1开导我在这里吗?
好的解决方案是:不存在任何问题。
我没有隔离测试的代码,但只承担了下面的代码没有做任何的目录结构...
因为我发现了目录得到了由代码本身删除以后。
总之,课程学...
尝试从您的路径中删除斜杠。
至少,它是如何在的例子中使用mkdir
文档。
个人而言,我不记得有任何问题,但我usally不追加尾随斜线,所以去和尝试。
更新 :
我只是想你的代码,它创建的每个目录,包括最后一个。 我在运行Mac OS X 10.5。 不知道为什么它不为你工作:-(
这是我使用的代码:
<?php
$path = '/Users/andre/test/bla/foo';
mkdir( $path, 0777, true );
对不起,好像我没有帮助在这里。
如果你什么都试过了,它一直没有工作,再加入一些文字类的路径的末尾:
$path = '/path/to/create/recur/ively/more/this_wont_be_created_anyway';
什么是你的PHP版本? 是safe_mode设置是否打开?
如果是的话,那么它可能是你正在经历http://bugs.php.net/bug.php?id=43276
创建中间目录是基于当前的umask设置。 你想是这样的
umask(0777);
mkdir($path, 0777, true);
创造指定路径的所有目录(文件夹)功能。 无需编写代码创建指定路径的每个目录(文件夹)。 它会创建的所有目录(文件夹)。
像:如果你想创建一个类似的目录结构
组织/ 1 /用户/ 1 /
所以,你只需要调用与像目录路径此功能
$ directories_path =组织/ 1 /用户/ 1 /';
createUploadDirectories($ directories_path);
/*
* Method Name : createUploadDirectories
* Parameter : null
* Task : Loading view for create directries for upload
*/
if ( ! function_exists('createUploadDirectories')){
function createUploadDirectories($upload_path=null){
if($upload_path==null) return false;
$upload_directories = explode('/',$upload_path);
$createDirectory = array();
foreach ($upload_directories as $upload_directory){
$createDirectory[] = $upload_directory;
$createDirectoryPath = implode('/',$createDirectory);
if(!is_dir($createDirectoryPath)){
$old = umask(0);
mkdir($createDirectoryPath,DIR_WRITE_MODE);// Create the folde if not exist and give permission
umask($old);
}
}
return true;
}
}
如果你做出愚蠢的错误我没有和传递一个字符串,而不是数字字面模式,你会得到这个错误。
mkdir( $path, "0777", true ); // BAD - only creates /a/b
mkdir( $path, 0777, true ); // GOOD - creates /a/b/c/d