2015-02-17 2 views
0

У меня есть следующий скрипт для загрузки файлов. Я смог запустить его успешно, за исключением недавно созданного VPS от BlueHost. Вот код:Разрешение mkdir запрещено на сервере bluehost

// Creating image upload path 
$destinationPath = public_path() . sprintf("/uploads/data/users/%d/", Auth::user()->getId()); 
$realPath = sprintf("uploads/data/users/%d/", Auth::user()->getId()); 

if (!file_exists($destinationPath)) { 
    mkdir($destinationPath, 0777, true); 
} 

$fileName = str_random(16); 
$fileName = str_replace('/', 'y', $fileName); 
$image_url = $realPath . '/' . $fileName . '.' . $ext; 

if ($file->move($destinationPath, $fileName . '.' . $ext)) { 
    $p->display_pic = $image_url; 
} 

Это ошибка, я получаю:

mkdir(): Permission denied 

разрешений папки установлены на 755 для родительской папки. Почему это происходит, и как я могу это исправить?

+1

Я не знаком с BlueHost, но вы проверили, что ваш сервер (Apache или Nginx, я полагаю) является владельцем этого каталога? Если нет, то 755 не позволит серверу ничего писать в этом каталоге. –

+0

Я предполагаю, что '/ uploads/data/users /' одна из папок в этой цепочке еще не существует, кроме того, вам не нужно устанавливать '0777', скрипт должен быть выполнен под' suexec' – cmorrissey

+0

Пожалуйста Я почти ничего не знаю о Linux, пожалуйста, дайте мне несколько демо. – user3718908

ответ

0

Когда вы покупаете домен, вы обычно указываете его на папку на своем сервере.

После инструкции я нашел в Интернете о том, как безопасно указать мой Laravel проект моего доменного имени без первого, чтобы идти через публичную папку, например:

yahoo.com/home вместо yahoo.com/public_html/home

я переехал и переименован в папку мой домен был первоначально указывая на, вы заметите, что я мой код у меня есть:

$destinationPath = public_path() . sprintf("/uploads/data/users/%d/", Auth::user()->getId()); 

Теперь то, что обычно означает, что она будет проверять и создать указанный папке, если не существует t в корне папки, на которую указывал мой домен.

Теперь, так как мой домен был не более заостренным в эту папку я предполагаю, что пытался создать эту папку в «домашней» директории моего сервера, следовательно, «доступ запрещен»

После вынимания предшествующего слеша это работает Теперь. :) В случае, если вам интересно о функции «public_path()», у меня есть, я попытался повторить ее на странице, и она оказалась пустой, потому что я не знаю, почему, может быть, кто-то может объяснить.