'mkdir ()': Permissão negada para criar pastas com PHP

1

Eu tenho este script PHP:

$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; // is in CodeIngiter
if (!is_dir($dir)) {
    mkdir($dir, 755);
}

Que cria uma pasta para armazenar as imagens das postagens. No entanto, estou recebendo este erro / aviso:

Severity: Warning
Message:  mkdir(): Permission denied

e não consigo criar a pasta.

Como posso consertar isso? Minha estrutura de pastas é assim:

/opt/lampp/htdocs/www/my-site/public/ (uploads/posts) // all folders inside files will generate in php

Mais informações: se eu comentar este código, crie manualmente a pasta posts e tente enviar um arquivo, recebo um erro dizendo que o caminho de destino não é gravável.

Saída de ls -l /opt/lampp/htdocs/www/my-site/ :

drwxrwxr-x 15 lykos lykos 4096 Sep 17 23:08 application
drwxrwxrwx 6 lykos lykos 4096 Sep 29 22:00 public
drwxrwxr-x 8 lykos lykos 4096 Sep 7 12:31 system

Saída de ls -l /opt/lampp/htdocs/www/my-site/public :

drwxr-xr-x 4 lykos lykos 4096 Sep 18 21:48 css
drwxr-xr-x 2 lykos lykos 4096 Sep 27 19:18 img
-rwxrwxr-x 1 lykos lykos 9872 Sep 17 23:04 index.php
drwxr-xr-x 8 lykos lykos 4096 Sep 27 20:06 js
drwxr-xr-x 2 lykos lykos 4096 Sep 29 20:34 uploads
    
por Lykos 29.09.2015 / 23:16

1 resposta

2

O problema está na sua chamada mkdir() , não no Ubuntu.

De acordo com o seu comentário , ls -l /opt/lampp/htdocs/www/my-site/public/uploads não existe, então você deve chamar mkdir() passando o parâmetro recursive :

$dir = '/uploads/posts';
if (!is_dir($dir)) {
    mkdir($dir, 755, true);
}
    
por kos 29.09.2015 / 23:30