MkDir Failed creating directory PHP

2019-09-04 23:19发布

I am trying to create a directory using PHP this works:

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

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

but this does not work

<?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..."; 
} 
?>

Yes the session variable is populated with the exact same thing as above 'user_615' so why would the second one be failing?

EDIT:

So I took the suggestion of @stefgosselin and re-designed the code to be

<?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 . "'" ;
} 
?>

And the output is

Failed to create directory...Your thisdir Variable is:'/unified/b/bis/www.mysite.com/jou/userpics/user_615

Any other ideas on what would cause the a Session variable not to be able to used in creating a directory?

标签: php mkdir
1条回答
Rolldiameter
2楼-- · 2019-09-05 00:08

As a small tip, I would simply put all of $thisdir in a variable and check if the output of that adds up to the result you are expecting.

IE: Having $thisdir ."/userpics/" . $uid defined in a variable would give you the possibility to easily output and validate the argument value you are passing to mkdir.

Edit: Adjusted minor phrasing for better english translation. Sorry above wasn't clear, Wesley understood the simple point I was clumsily trying to make.

查看更多
登录 后发表回答