我的代码
mkdir("/some/absolute/path",0777);
Run Code Online (Sandbox Code Playgroud)
和
mkdir("relative/path", 0777);
Run Code Online (Sandbox Code Playgroud)
无法正常工作,安全模式已关闭,我甚至尝试将所有父文件夹设置为777.
有任何想法吗?
编辑:我确实打开了错误报告,在我的挫折中,我已经完成了777道路,只是为了确保这不是问题.这是一件非常简单的事情.
编辑编辑:为所有回复建议的人提供赞成...但我不会选择答案,因为这仍然没有解决,但我认为这将是永远开放的那些之一.
编辑x 3:所以我对这个问题的解决方案最不满意......我开始使用干净的虚拟机映像,重试它并且现在可以正常工作.可不是闹着玩的.
我有一个以前工作的PHP脚本,能够创建一个目录mkdir:
$webfolder = "/var/www/html/images/user";
mkdir($webfolder, 0770);
Run Code Online (Sandbox Code Playgroud)
我对文件夹的权限设置进行了一些更改,/var/www/html/images现在是:
drwxrwx---. myself apache system_u:object_r:httpd_sys_content_t:s0 images
Run Code Online (Sandbox Code Playgroud)
我想以前这个文件夹是由apache.但由于apache具有读取,写入和执行作为用户组的完全权限,我想知道为什么它无法在其中创建文件夹.使用mkdir生成一个false布尔值.
问题是由于目录所有权还是还有其他原因?请注意,我使用的是PHP 5.4版.
错误日志添加:
[2012年12月17日星期一11:12:34] [错误] [客户端127.0.0.1] PHP警告:mkdir():第33行/ var/www/html/upload中的权限被拒绝,引用:https:// mywebsite. COM /引荐
我创建了一个新文件夹"sdcard/dd ":
File album = new File(albumPath);
if (album.exists()) {
Log.d(TAG, albumPath + " already exists.");
} else {
boolean bFile = album.mkdir();
}
Run Code Online (Sandbox Code Playgroud)
再次,我用相同的代码创建第二个文件夹"sdcard/DD ",但是,这次album.exists()返回true,表示"dd"等于"DD".
任何人都知道为什么File.exists()不能检查文件夹名称的情况?谢谢!
可能重复:
递归创建目录
什么是创建导演的java-esque方式,如果存在则不抱怨?
引用该男子mkdir:
-p Create intermediate directories as required... with this option
specified, no error will be reported if a directory given as an
operand already exists.
Run Code Online (Sandbox Code Playgroud) 我运行以下代码:
mkdir('mnt/1',0777,true);
mkdir('mnt/a',0777);
Run Code Online (Sandbox Code Playgroud)
创建目录"a",而目录"1"不创建,页面打印警告.
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3
Run Code Online (Sandbox Code Playgroud)
我对用户apache正在运行的目录mnt拥有完全权限:
drwxr-xr-x 1 bitrix bitrix 4096 Nov 28 10:10 mnt
Run Code Online (Sandbox Code Playgroud)
PHP版本 - PHP 5.3.3.Apache 2.2.15版.
任何想法,为什么mkdir失败,递归选项设置为true?
更新! 好吧,我清除了文件夹,制作了以下php脚本并再次运行:
<?php
error_reporting(E_ALL);
mkdir('mnt/1',0777,true);
mkdir('mnt/2/',0777,true);
mkdir('./mnt/3',0777,true);
mkdir('./mnt/4/',0777,true);
mkdir('mnt/a',0777);
mkdir('mnt/b/',0777);
mkdir('./mnt/c',0777);
mkdir('./mnt/d/',0777);
?>
Run Code Online (Sandbox Code Playgroud)
这是输出:
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 4
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 5
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 6
Run Code Online (Sandbox Code Playgroud)
以下是脚本执行后文件夹mnt的内容: …
正如我所看到的,rsync如果文件路径中的某些目录不存在,则无法同步文件.为什么它不用mkdir -p命令创建这个目录?也许它有一个选择吗?-r选项在这种情况下不起作用.
考虑:
PS Y:\> mkdir C:/dog
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/7/2013 10:59 PM dog
PS Y:\> mkdir C:/dog
New-Item : Item with specified name C:\dog already exists.
At line:38 char:24
+ $scriptCmd = {& <<<< $wrappedCmd -Type Directory @PSBoundParameters }
+ CategoryInfo : ResourceExists: (C:\dog:String) [New-Item], IOException
+ FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
Run Code Online (Sandbox Code Playgroud) 我正在使用这个基本脚本:
$folderPath = "../path/to/$folder/";
mkdir("$folderPath");
Run Code Online (Sandbox Code Playgroud)
我创建此目录,然后将照片上传到它.我已经这样做了4-5个月了,当我试图通过网络浏览器查看文件夹的内容时突然我开始收到'FORBIDDEN'错误
目录创建相同,照片仍然没有问题上传,但我无法访问照片
我尝试重写脚本并使用chmod更改权限,但我根本没有运气
所有旧文件夹都是使用以下命令创建的:-w-rwx rx rx
我无法重新创建这个
我已经尝试在我的脚本中添加一个chmod行:
$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);
Run Code Online (Sandbox Code Playgroud)
但是我无法重新创建相同的权限,我正在尝试理解chmod是如何工作的,但我无法弄清楚如何使这个非常基本的功能再次正常工作
在遇到mkdirs()的问题并且在互联网上闲逛之后,我得到的印象是mkdirs()存在线程安全问题.
当多个线程可能尝试创建类似的文件结构时,有没有办法确保正确创建目录?
谢谢
(在我的情况下,我将在Android上使用此功能)
我刚刚发现了一小段代码,让我在不使用system()的情况下使用windows API创建目录.唯一的问题是我无法在子目录中创建目录.例如
#include<windows.h>
int main(){
CreateDirectory ("C:\\random", NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在C中创建名为random的文件夹.
但如果我这样做
#include<windows.h>
int main(){
CreateDirectory ("C:\\Users\morons", NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它在名为Usersmorons的C che文件夹中创建,而不是在Users下创建文件夹morons.有什么建议?