Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mkdir通过符号链接警告_Php_Symlink_Mkdir - Fatal编程技术网

php mkdir通过符号链接警告

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

我想使用符号链接(软链接)递归创建目录,但遇到警告:

警告:mkdir():文件存在于php代码的…路径中。。。在线21

我要创建的目录是
/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
。谢谢