错误 - 需要bootstrap /../ vendor / autoload.php)laravel 5中的index.php第22行

时间:2016-05-11 09:02:04

标签: php laravel laravel-5

我正在使用Laravel 5.2框架并运行第一次项目

当我运行根链接显示错误时:

Warning: require(/home/ubuntu/workspace/../bootstrap/autoload.php): failed to open stream: No such file or directory in /home/ubuntu/workspace/index.php on line 22 Call Stack: 0.0028 236248 1. {main}() /home/ubuntu/workspace/index.php:0 Fatal error: require(): Failed opening required '/home/ubuntu/workspace/../bootstrap/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/ubuntu/workspace/index.php on line 22 Call Stack: 0.0028 236248 1. {main}() /home/ubuntu/workspace/index.php:0

在我调用composer install之前

我的应用程序/ .htpaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)/$ /$1 [L,R=301]

     # Handle Front Controller...
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^ index.php [L]

    # Handle Authorization Header
     RewriteCond %{HTTP:Authorization} .
     RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

     RewriteRule ^(.*)$ public/$1 [L]

</IfModule>

routes.php文件

Route::get('/', function () {
    return view('welcome');
});

应用/ index.php的

require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

编辑:

我在index.php中替换为

require __DIR__.'/../vendor/autoload.php';

但显示错误:

Warning: require(/home/ubuntu/workspace/../vendor/autoload.php): failed to open stream: No such file or directory in /home/ubuntu/workspace/index.php on line 22 Call Stack: 0.0004 233376 1. {main}() /home/ubuntu/workspace/index.php:0 Fatal error: require(): Failed opening required '/home/ubuntu/workspace/../vendor/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/ubuntu/workspace/index.php on line 22 Call Stack: 0.0004 233376 1. {main}() /home/ubuntu/workspace/index.php:0

我在根目录中有文件夹供应商。我怎么解决这个问题?谢谢。

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,但对作曲家发出的命令却为我排除了一切。

HorizontalOptions

有时当您运行:composer update --no-scripts时,您也遇到了错误,因此最好先选择运行:composer install,然后正常运行composer install。

答案 1 :(得分:2)

__DIR__是您正在运行的脚本目录的绝对路径。

获取终端并cd到此脚本所在的目录。从那里开始,使用ls和一个目录(../)之类的路径以及基于选项卡的自动完成功能来查找从索引中找到autoload.php所需的路径脚本。

如果你得到这样的结果:

$ ls ../public/index.php
ls: cannot access ../public/index.php: No such file or directory

然后您知道该文件不存在于指定的路径中。

我觉得通过告诉你如何找到它而不是猜测它应该在哪里来回答这个问题会更好。

答案 2 :(得分:1)

我认为这是你的composer.json中的问题,因为我也有同样的问题。

请替换您的整个&#34;脚本&#34;在composer.json中使用此对象..

"scripts": {
        "post-root-package-install": [
        "php -r \"copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ],
    "post-install-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postInstall",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "php artisan optimize"
    ]
},

现在尝试运行composer install,如果不起作用,那么composer update。