2015-09-07 4 views
1

Я запускаю следующий сценарий для загрузки изображения на сервер и получения следующей ошибки, когда он отлично работает на локальном хосте.mkdir(): Permission denied Laravel

Код

$user_id = Auth::id(); 
$logicpath = 'userdp/' . $user_id . '/'; 
$pubpath = 'userdp/' . $user_id . '/' . $dpFile; 
$path = '/userdp/' . $user_id . '/' . $dpFile; 

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

Ошибка

ErrorException в UploadController.php линии 605: MkDir(): Разрешение отказано

в HandleExceptions-> HandleError ('2 ',' mkdir(): Permission denied ', '/var/www/html/laravel /app/Http/Controllers/UploadController.php ', ' 605 ', массив (' dp '=> object (UploadedFile),' ext '=>' jpg ',' img '=> объект (изображение),' mime '=>' image/jpeg ',' width '=>' 200 ',' height '=> ' 200 ',' fileSize '=>' 17152 ',' dpFile '=> ' f12f298ab18d58a59c4ed8a589cd1cdc.jpg ', 'user_id' => '1', 'logicpath' => 'userdp/1 /', 'pubpath' => 'userdp/1/f12f298ab18d58a59c4ed8a589cd1cdc.jpg', 'path' => '/ userdp/1/f12f298ab18d58a59c4ed8a589cd1cdc .jpg '))

Я пробовал chmod 777 public и перезапустил сервер. Но это не сработало.

+2

Вы должны использовать 755 не 777. –

+0

Никогда не давайте 777-разрешение вашей корневой папке. Его утечка безопасности для профессиональных хакеров. Попробуйте установить жесткие правила безопасности и назначить только нужные права/права для группы/пользователя. –

ответ

-3

Вы должны выполнить chmod рекурсивно, чтобы убедиться, что все подкаталоги также несут одинаковые разрешения. Попробуйте запустить вместо этого:

chmod -R 777 
+2

Осторожно с помощью этой команды: [Как сервер станет уязвим с помощью chmod 777] (http://stackoverflow.com/a/11271632/2790481) – rdok

0

Я попытался CHMOD 777 государственных и перезапустить сервер. Но это не сработало.

Убедитесь, что вы используете CHMOD рекурсивно и с правами администратора (если вы можете)

SUDO CHMOD -R 777 /var/www/html/laravel/ 

С уважением

2

Вы пытаетесь переместить загруженный файл в папку в корневом каталоге вашего сервера , Убедитесь, что вы получили абсолютный путь.

$logicpath = public_path() . '/userdp/' . $user_id . '/'; 
+0

Я пробовал это и не работал. – user1012181

+2

Вы также должны chmod 'userdp' рекурсивно:' chmod -R 755 public/userdp' – user2479930

-1

же ошибка для команды

composer create-project --prefer-dist laravel/laravel MyProject 

Но он работал после следующих команд

sudo mkdir MyProject 

sudo chmod -R 777 MyProject 

Или лучше бегите композитор создать-проект команды в какой-то другой путь, чем HTDOCS

-2

Напишите этот код в своем ком манжета линия

sudo chmod -R 777 /var/www/html/