我在PHP 5.2.4(没有safe_mode)linux服务器上有以下代码:
mkdir( $path, 0777, true );
当我输入如下路径时:
'/path/to/create/recur/ively/'
创建除最后一个目录之外的所有目录... 当我添加另一个目录,如:
'/path/to/create/recur/ively/more/'
再次创建所有路径,除了最后一个路径......
尝试使用和不使用尾部斜杠
请问任何人在这里启发吗?
答案 0 :(得分:13)
好的解决方案如下:没有问题。
我没有单独测试代码,但只假设以下代码没有对目录结构做任何事情......
因为我发现该目录后来被代码本身删除了。
无论如何,课程学到了......
答案 1 :(得分:8)
尝试从路径中删除尾部斜杠。
至少在mkdir
文档的示例中使用它的方式。
就个人而言,我不记得遇到问题,但我通常不附加尾随斜杠,所以去尝试一下。
<强>更新强>:
我刚尝试了你的代码,它创建了包含最后一个目录的每个目录。 我正在运行Mac OS X 10.5。不知道为什么它不适合你: - (
这就是我使用的代码:
<?php
$path = '/Users/andre/test/bla/foo';
mkdir( $path, 0777, true );
对不起,好像我在这里没有帮助。
答案 2 :(得分:2)
如果您尝试了所有内容并且无法正常工作,请在路径末尾添加一些文字,如:
$path = '/path/to/create/recur/ively/more/this_wont_be_created_anyway';
答案 3 :(得分:1)
你的PHP版本是什么? safe_mode是否已开启?
如果是这样,那么您可能会遇到http://bugs.php.net/bug.php?id=43276
答案 4 :(得分:1)
创建的中间目录基于当前的umask设置。你想要这样的东西
umask(0777);
mkdir($path, 0777, true);
答案 5 :(得分:0)
创建给定路径的所有目录(文件夹)的函数。无需编写代码创建给定路径的每个目录(文件夹)。它将创建所有目录(文件夹)。
喜欢:如果你想创建像
的目录结构
organizations / 1 / users / 1 /
所以你只需要像目录路径一样调用这个函数
$ directories_path =&#39; organizations / 1 / users / 1 /&#39;;
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;
}
}
答案 6 :(得分:0)
如果你犯了我所犯的愚蠢错误并传递一个字符串,而不是模式的数字文字,你会收到这个错误。
send-keys