我正在运行以下脚本以在服务器中上传图像,并在localhost上完美运行时收到以下错误。
代码
$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);
}
错误
UploadController.php第605行中的ErrorException:mkdir():权限 拒绝
at HandleExceptions-> handleError('2','mkdir():Permission denied', '/var/www/html/laravel/app/Http/Controllers/UploadController.php', '605',数组('dp'=>对象(UploadedFile),'ext'=>'jpg','img'=> object(图片),'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
并重新启动了服务器。但它没有用。
答案 0 :(得分:3)
尝试:
sudo chown -R www-data:www-data /var/www/yoursite/public
答案 1 :(得分:2)
您正尝试将上传的文件移动到服务器根目录中的文件夹中。确保你获得正确的绝对路径。
$logicpath = public_path() . '/userdp/' . $user_id . '/';
答案 2 :(得分:1)
运行chmod -R 777
可能无法正常工作,并且出于安全原因不应该使用它,这始终是警告。
=>如上面@ bokino12所述
sudo chown -R www-data:www-data /var/www/yoursite/public
=>如果由于某种原因它不起作用,可能是当前用户对该目录没有权限,请尝试
sudo chown -R $USER:$USER /var/www/yoursite/public
这会将当前用户分配为目录的所有者。
答案 3 :(得分:1)
错误:
[ErrorException]
mkdir(): Permission denied
如果您正在/WWW
文件夹中创建Project,并且遇到上述错误,请尝试使用以下命令,它对我有用。
sudo chown -R www-data:www-data /var/www
sudo chown -R $USER:$USER /var/www
运行此命令后,尝试再次创建项目。
cd /var/www
composer create-project laravel/laravel projectname "5.6.*"
因为我使用的是laravel 5.6,所以我在创建Project时已指定了版本。
答案 4 :(得分:0)
我尝试了chmod 777 public并重新启动了服务器。但它没有用。
请确保以递归方式使用CHMOD并使用管理员权限(如果可以)
SUDO CHMOD -R 777 /var/www/html/laravel/
此致
答案 5 :(得分:0)
我发现了一个非常有趣的解决方案。只需输入“。”像这样的例子。这个对我有用。
$destinationPath = "./public/uploads"; // upload path
if (!file_exists($destinationPath)) {
mkdir($destinationPath, 0755, true);
}
$request->sub_category_attr_value->move($destinationPath, $picName);
答案 6 :(得分:0)
请不要将模式更改为 777,因为这可能会导致一些严重的安全问题。而是尝试使用这些命令来更改文件夹的权限。
sudo chown -R www-data:www-data /var/www
sudo chown -R $USER:$USER /var/www
chmod -R 755 </userdp> Your upload folder path
尝试上传 - 它会起作用 - 如果它失败尝试
$user_id = Auth::id();
$logicpath = '/userdp/' . $user_id . '/';
$pubpath = 'userdp/' . $user_id . '/' . $dpFile;
$path = '/userdp/' . $user_id . '/' . $dpFile;
if (!file_exists($logicpath)) {
mkdir($logicpath, 0755, true);
}
答案 7 :(得分:0)
要解决这个问题,请进入您的 Laravel 项目,使您的公共目录可写。
const sendReport = () => {
const spreadsheet = SpreadsheetApp.getActive();
const activeSheet = spreadsheet.getActiveSheet();
const sheets = spreadsheet.getSheets();
//hide all sheets except the active sheet
sheets.forEach(sh => {
if (sh.getName() !== activeSheet.getName()) sh.hideSheet()
})
const message = {
to: "maneeshsinghal9810@gmail.com",
subject: "Monthly sales report",
body: "Hi team,\n\nPlease find the monthly report attached.\n\nThank you,\nBob",
name: "Bob",
setName: "New",
attachments: [spreadsheet.getAs(MimeType.PDF).setName('New Report')]
}
MailApp.sendEmail(message);
//unhide all sheets
sheets.forEach(s => s.showSheet());
}
答案 8 :(得分:-3)
命令
的错误相同composer create-project --prefer-dist laravel/laravel MyProject
但它在以下命令之后起作用
sudo mkdir MyProject
sudo chmod -R 777 MyProject
或者更好地将composer create-project命令运行到某些不同于htdocs的路径
答案 9 :(得分:-6)
您必须递归执行chmod以确保所有子目录也具有相同的权限。请尝试运行此代码:
chmod -R 777
现在虽然这会解决您的问题,但您应该仔细阅读设置上述权限时出现的问题,因为此链接在下面的评论中显示。不好发帖在这里:
http://stackoverflow.com/a/11271632/2790481
编辑:这应该只在/var/www/html/laravel/storage
内的Laravel存储目录中完成,并且永远不会在系统级别完成。我最初忘了提到这一点,因此都是所有的投票。