У меня есть следующий скрипт для загрузки файлов. Я смог запустить его успешно, за исключением недавно предоставленного 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 для родительской папки. Почему это происходит, и как я могу это исправить?
Когда вы покупаете домен, вы обычно указываете на папку на вашем сервере.
Следуя инструкциям, я нашел в Интернете, как безопасно указать свой проект laravel на мое доменное имя без необходимости сначала просматривать общую папку, например:
yahoo.com/home вместо yahoo.com/public_html/home
я переместил и переименовал папку, на которую изначально указывал мой домен, вы заметите, что у меня есть мой код:
$destinationPath = public_path() . sprintf("/uploads/data/users/%d/", Auth::user()->getId());
Теперь это обычно означает, что он будет проверять и создавать указанную папку, если она не существует в корне папки, на которую указывает мой домен.
Теперь, так как мой домен больше не указывал на эту папку, я предполагаю, что он пытался создать эту папку в «домашней» папке моего сервера, следовательно, «отказано в разрешении»
После удаления предыдущей косой черты это работает теперь. 🙂
В случае, если вам интересно узнать о функции public_path (), у меня там я попытался вывести ее на страницу, и она оказалась пустой для этого, я не знаю, почему, может быть, кто-то еще может объяснить.
Других решений пока нет …