php mkdir通过符号链接警告
我想使用符号链接(软链接)递归创建目录,但遇到警告: 警告:mkdir():文件存在于php代码的…路径中。。。在线21 我要创建的目录是php mkdir通过符号链接警告,php,symlink,mkdir,Php,Symlink,Mkdir,我想使用符号链接(软链接)递归创建目录,但遇到警告: 警告:mkdir():文件存在于php代码的…路径中。。。在线21 我要创建的目录是/vagrant/resources/page 在/var/www路径中,我创建了一个名为resources的符号链接,链接到/vagrant/resources目录,php代码如下: $directory = '/var/www/resources/page'; if(!file_exists($directory)){ mkdir($direc
/vagrant/resources/page
在/var/www
路径中,我创建了一个名为resources
的符号链接,链接到/vagrant/resources
目录,php代码如下:
$directory = '/var/www/resources/page';
if(!file_exists($directory)){
mkdir($directory,0777,true);
}
对/vagrant中所有目录的权限设置为777。
谢谢。正如@arkascha提到的,您的问题不在于符号链接,而在于您试图创建的目录的存在。考虑到您的mkdir命令有一个合理的条件,这有点奇怪
请尝试使用
is_dir()
而不是file_exists()
,正如@arkascha所述,您的问题不在于符号链接,而在于您试图创建的目录的存在。考虑到您的mkdir命令有一个合理的条件,这有点奇怪
尝试使用
is_dir()
而不是file_exists()
我解决了readlink的类似问题。之前还要检查它是否是链接。之后,路径可以按预期使用
$path = '/var/www/resources'
if (is_link($path)) {
$path = readlink($path);
}
我用readlink解决了一个类似的问题。之前还要检查它是否是链接。之后,路径可以按预期使用
$path = '/var/www/resources'
if (is_link($path)) {
$path = readlink($path);
}
警告消息很清楚:要创建的目录已经存在。但是请注意,警告不是错误。可能脚本只是声称(正确地)已经存在了
/var
,/var/www
,/var/www/resources
,另一件事,只是一个一般性提示:0777的文件系统权限从来都不是一个好主意,通常不需要。这会降低系统的安全性。为什么?警告信息很清楚:要创建的目录已经存在。但是请注意,警告不是错误。可能脚本只是声称(正确地)已经存在了/var
,/var/www
,/var/www/resources
,另一件事,只是一个一般性提示:0777的文件系统权限从来都不是一个好主意,通常不需要。这会降低系统的安全性。为什么?我测试的是_dir,问题没有解决。当我尝试从主路径(/vagrant
)创建目录时,一切正常,但从符号链接(/var/www
)路径没有创建子目录。由于此代码mkdir不起作用:$directory='/var/www/resources/widgets/mysite/html_pages/categories/Calendar.html/'$文件=$directory'Calendar.html_uuu1435404786.html'$内容=‘测试内容’;如果(!is_dir($directory)){mkdir($directory,0777,true);}file_put_contents($file,$content)代码>但是当我使用/vagrant
而不是/var/www
时,这没关系。奇怪的是,你的代码对我有效,唯一不同的是我在tmp中创建了我的音乐文件夹的符号链接。您使用的操作系统是什么?文件系统区分大小写吗?如果是这样的话,你确定你使用的是符号链接的确切情况吗?亲爱的阿里,我使用的是虚拟盒和流浪工具,我的操作系统是ubuntu 12.04。经过很多努力,我再次运行symlink命令,问题得到了解决sudo ln-s/vagrant/resources/*/var/www/resources
。谢谢。我已经测试过了,问题还没有解决。当我尝试从主路径(/vagrant
)创建目录时,一切正常,但从符号链接(/var/www
)路径没有创建子目录。由于此代码mkdir不起作用:$directory='/var/www/resources/widgets/mysite/html_pages/categories/Calendar.html/'$文件=$directory'Calendar.html_uuu1435404786.html'$内容=‘测试内容’;如果(!is_dir($directory)){mkdir($directory,0777,true);}file_put_contents($file,$content)代码>但是当我使用/vagrant
而不是/var/www
时,这没关系。奇怪的是,你的代码对我有效,唯一不同的是我在tmp中创建了我的音乐文件夹的符号链接。您使用的操作系统是什么?文件系统区分大小写吗?如果是这样的话,你确定你使用的是符号链接的确切情况吗?亲爱的阿里,我使用的是虚拟盒和流浪工具,我的操作系统是ubuntu 12.04。经过很多努力,我再次运行symlink命令,问题得到了解决sudo ln-s/vagrant/resources/*/var/www/resources
。谢谢