Отказано в разрешении mkdir на сервере bluehost

У меня есть следующий скрипт для загрузки файлов. Я смог запустить его успешно, за исключением недавно предоставленного VPS от 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 для родительской папки. Почему это происходит, и как я могу это исправить?

0

Решение

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

Следуя инструкциям, я нашел в Интернете, как безопасно указать свой проект laravel на мое доменное имя без необходимости сначала просматривать общую папку, например:

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

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

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

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

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

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

0

Другие решения

Других решений пока нет …