2011-08-18 111 views
0

我试图使用PHP创建这个工程的目录:MKDIR无法创建目录PHP

<?php 
$uid = "user_615"; 
$thisdir = getcwd(); 

if(mkdir($thisdir ."/userpics/" . $uid , 0777)) 
{ 
    echo "Directory has been created successfully..."; 
} 
else 
{ 
    echo "Failed to create directory..."; 
} 
?> 

但这不起作用

<?php 
session_start(); 
$uid = $_SESSION['username']; 
$thisdir = getcwd(); 

if(mkdir($thisdir ."/userpics/" . $uid , 0777)) 
{ 
    echo "Directory has been created successfully..."; 
} 
else 
{ 
    echo "Failed to create directory..."; 
} 
?> 

是会话变量填充了同样的事情如上面'user_615'那么为什么第二个失败?

编辑:

所以我把@stefgosselin和建议重新设计的代码是

<?php 
session_start(); 
$uid = $_SESSION['username']; 
$thisdir = getcwd() . "/userpics" . $uid; 

if(mkdir($thisdir , 0777)) 
{ 
    echo "Directory has been created successfully..."; 
} 
else 
{ 
    echo "Failed to create directory..."; 
    echo "Your thisdir Variable is:'" . $thisdir . "'" ; 
} 
?> 

,输出是

创建目录失败。 ..您的thisdir变量为:'/ unified/b/bis/www.mysite.com/jou/userpics/user_615

关于什么会导致Session变量不能用于创建目录的任何其他想法?

+1

我*想*史蒂夫斯珊林试图说的是你应该将整个路径存储在一个变量中,并检查它的值作为调试方法。你* suuuure *会话数据是否正确?没有其他解释我能想到。 –

+0

是的。这是我试图做的简单的一点。对不起,我的英语不好。在发帖之前我必须阅读3次,甚至有时候措辞很有趣。 :o/ – stefgosselin

+0

“你的thisdir变量是:'/ unified/b/bis/www.mysite.com/jou/userpics'”似乎不是应该有的结尾。 –

回答

2

作为一个小提示,我只是简单地将$thisdir的全部放在一个变量中,并检查它的输出是否与您期望的结果相加。

IE:在变量中定义了$thisdir ."/userpics/" . $uid可以让您轻松输出并验证您传递给mkdir的参数值。

编辑:调整较小的措词,以获得更好的英语翻译。对不起,上面还不清楚,韦斯利明白我笨拙地想要做的简单点。

+1

我无法理解这个答案,''是什么,你在说什么? –

+0

我的想法确切。不过,我以前见过@stef gosselin的回答,他们通常都很好,所以我保留了判断力。 –

+0

@韦斯利谢谢你们。我编辑了我制作的帖子。公平的说,我一直说这是一个*小技巧*。如果我要调试这些代码,我会做的第一件事就是我在答案中写的内容。 – stefgosselin