Rob Milnes
Rob Milnes

Reputation: 13

PHP mkdir() failing to work

Here's my code; I've renamed the directories, obviously. ;)

$thepath = "/var/www/vhosts/sub.domain.co.uk/web/apps/storage/".$userclient."/evidence/".$scid."/".$doctype."/";
$testdir = is_dir($thepath); 
if ($testdir == false) {
    mkdir($thepath, 0777);
}

In this case, the following variables apply;

$userclient = '000';
$scid       = '9263';
$doctype    = 'Insurance Policy';

So, the path should be;

/var/www/vhosts/sub.domain.co.uk/web/apps/storage/000/evidence/9263/Insurance Policy/

I know this works, EVERYWHERE else in my code, I have other applications using an almost identical setup. But the one above, appears to be tripping up on /evidence/ - it sets the permissions to 755, but will then create the directories per time I run the code, if I set evidence to 777 (Octal).

I get the following error message using;

if (!@mkdir($thepath)) {
    $error = error_get_last();
    echo $error['message'];
}
mkdir(): No such file or directory

Any help would be greatly appreciated, I have to finish this application by Thursday - and this file upload part is the last bit!

Thank you!

Upvotes: 1

Views: 3185

Answers (2)

Daniil Ryzhkov
Daniil Ryzhkov

Reputation: 7596

PHP can't find directory in which you want to create other directory.

You need to set $recursive param as true:

mkdir($thepath, 0777, true);

Upvotes: 3

Michael Krelin - hacker
Michael Krelin - hacker

Reputation: 143061

Maybe you want to try mkdir($path,$mode,true) to create missing links as well?

Upvotes: 0

Related Questions