2015-11-22 4 views
2

Стараюсь следующий метод, чтобы создать папку с его subdirectorys, если он уже не существует:Laravel MkDir() Отказано в

public function createFolderIfNotExist($path){ 
    //Check if the folder already exists 
    if(!File::Exists($path)){ 
     //make folder with $path generate recursive with right 0775 
     File::makeDirectory($path, 0775 , true); 
    } 
} 

При запуске, локальной он работает отлично (XAMPP), при нажатии на сервер она возвращает

разрешения отказано

Первые строки ошибки

в Filesystem.php линии 337

в HandleExceptions-> HandleError ('2', 'MkDir(): Разрешение отказано', «/ вар/WWW/****/продавец/Laravel/framework/'' '' '' '' '/ var/www/****/public/images \ product \ 206', 'mode' => '/ var/www/****/public/images \ product \ 206', 'mode' = > '509', 'рекурсивное' => верно, 'сила' => ложное))

на MKDIR ('/ вар/WWW/****/общественный/изображения \ продукт \ 206', ' 509 ', true) в строке Filesystem.php 337

в Filesystem-> MakeDirectory ('/ вар/WWW/****/государственные/изображения \ продукт \ 206', '509', правда) в Facade.php линии 216

на Фасад :: __ callStatic ('MakeDirectory', массив ('/ вар/WWW/****/публичный/изображений \ продукт \ 206', '509', правда)) в ProductController.php линии 452

Сообщение об ошибке показывает, что он пытается установить разрешения на 509

Путь th при I перевале:

$pathThumb = public_path('images\product\\'.$product->id.'\thumb'); 

При проверке разрешающей способности на сервере он говорит 775 для общей папки.

enter image description here

Что я делаю неправильно?

+1

Предполагаю, что вы используете * nix на сервере. Вы проверяли, отключен ли ваш Selinux? Кроме того, вы должны установить принадлежность к каталогу группе или пользователю, с которой работает apache/nginx. вам нужно запустить chgrp apache product -Rf если вы используете apache: проверьте свой httpd.conf, какой пользователь и группа запускает ваш сервер. (дайте это разрешение пользователю). Очень вероятно, что вы используете другого пользователя для FTP для загрузки файлов и разных пользователей для веб-сервера – TrueStory

ответ

2

Пользователь unix, с которым работает php-сервер, не имеет разрешения на доступ к родительскому каталогу по адресу $path.

Гугл "permission denied" makeDirectoryshows the same.

Проблема находится вне PHP, поэтому вам необходимо определить, как make the folder writeable like this, или сделать файлы в каталоге, доступном для записи пользователю процесса php-сервера. Это должно включать пользователя sysadmin/devops.

Смежные вопросы