尽管我有正确的权限,但Laravel 4无法创建目录

时间:2014-01-03 23:00:21

标签: laravel laravel-4

尽管我提供了正确的权限,但Laravel4无法创建目录。 发生了FileException错误,http://s28.postimg.org/xkor8srxp/2014_01_03_2_53_18.png。 我尝试了很多权限..

  • sudo chmod -R 777 storage
  • sudo chmod -R 707 storage
  • sudo chmod -R o + rwx storage

我甚至重新启动了Apache服务器。 我一直在谷歌搜索24小时左右,仍然无法弄清楚.. 以下是路线和视图文件。

// routes.php

Route::post('handle-form', function()
{
    $name = Input::file('book')->getClientOriginalName();
Input::file('book')->move('/storage/directory', $name);
return 'File was moved.';
});

// form2.blade.php
<form action="{{ url('handle-form') }}"
  method="POST"
  enctype="multipart/form-data">

<input type="file" name="book" />
<input type="submit">
</form>

目前我按照你的帮助对routes.php做了什么,

Route::post('handle-form', function()
{
$name = Input::file('book')->getClientOriginalName();
Input::file('book')->move(public_path().'/storage/directory', $name); 
return 'File was moved.';
});

我给予的许可是 sudo chmod -R 777存储

2 个答案:

答案 0 :(得分:9)

这是你可以做的工作:

在公共文件夹或任何其他位置创建目录:

 mkdir -p /var/www/your-site-path/public/storage/directory

让您的网络服务器可写“

sudo chmod 770 /var/www/your-site-path/public/storage/directory

sudo chown username:www-data /var/www/your-site-path/public/storage/directory
or
sudo chown dongju:httpd /var/www/your-site-path/public/storage/directory

告诉Laravel以这种方式将文件写入该文件夹:

$name = Input::file('book')->getClientOriginalName();

Input::file('book')->move(public_path().'/storage/directory', $name);    

使用这种方法,我在这里创建了这两条路线,它对我有用:

Route::get('form', function() {
    return 

        Form::open(array('url' => 'http://your-dev-server-address/upload', 'files' => true)) .

        Form::file('book', $attributes = array()) .

        Form::submit('submit') .

        Form::close();
});

Route::post('upload', function() {

    Input::file('book')->move(public_path().'/storage/directory', Input::file('book')->getClientOriginalName());

});

第一个/form将显示文件上传表单,第二个/upload将获取文件并将其保存到正确的路径。

答案 1 :(得分:0)

在我的情况下,问题是我使用的是一个环境变量,这个变量在拨打电话时是不可用的,所以我只需更改我正在使用的变量。

简而言之,请检查您指定的路径。