Laravel 5无法检测应用程序命名空间

mpa*_*pak 40 laravel-5

我是Laravel 5的新手,并试图一点一点地理解它,此刻我真的对错误信息感到困惑.MVC对我来说是新事物.

我正在尝试做的是我的网站的博客系统,我下载了名为"Serverfireteam/blog"的软件包; https://phppackages.org/p/serverfireteam/blog

它安装得很好,我想.当我访问http://myhost.com/public/panel/login时,我会看到登录屏幕但是当我登录时它会给我这个错误:

Application.php第1119行中的ErrorException:无法检测应用程序命名空间.(查看:/var/www/html/mpa2/resources/views/vendor/panelViews/dashboard.blade.php)

&&

Application.php第1119行中的RuntimeException:无法检测应用程序命名空间.

有趣的是它之前很好用,我可以登录并制作/编辑博客文章,我可以看到它们转到mysql-database.我也能在现场看到它们.然后我开始修改视图/模板文件,以便将博客输出集成到我网站自己的布局中.

我不知道是什么给了,我试图谷歌寻求解决方案,但没有帮助.什么想法可能是错的?

mpa*_*pak 92

好的,我解决了.我做了什么来解决这个问题:

composer update
Run Code Online (Sandbox Code Playgroud)

给了我以下错误:

[Seld\JsonLint\ParsingException]

"./composer.json" does not contain valid JSON
 Parse error on line 9:
"require-dev
 ---------------------^
 Expected: 'STRING' - It appears you have an extra trailing comma
Run Code Online (Sandbox Code Playgroud)

我打开了composer.json,最后一行还有一个额外的逗号:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
}
Run Code Online (Sandbox Code Playgroud)

删除了逗号,看起来像这样:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*"
}
Run Code Online (Sandbox Code Playgroud)

问题消失了.

  • 感谢您发布此内容,更重要的是,发布您找到的解决方案.这也是我的问题,现在其他人可以迅速解决这个问题. (7认同)
  • 遇到了几乎相同的问题,这是“composer.json”文件中的合并冲突。感谢您的解决方案。 (2认同)

moh*_*feh 18

通常,这意味着您的composer.json 文件包含无效的JSON。通常在数组末尾有一个额外的逗号。

尝试运行此命令以准确告诉您问题出在哪里:

composer diagnose
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,你是对的(这是composer.json 中数组末尾的一个额外逗号) (2认同)

fay*_*ayz 5

laravel version: 5.8.3

[One more Reason]: default app path in composer.json is modified

the default setup looks like this

"psr-4": {
    "App\\": "app/"
 },
Run Code Online (Sandbox Code Playgroud)

If its modified to say,

"psr-4": {
    "Core\\": "app/Core/"
 },
Run Code Online (Sandbox Code Playgroud)

the make commands with artisan wont work, and a few other things

the reason is https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/Application.php#L296

app is static in the path, and here is the where the exception is thrown https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/Application.php#L1143

This default behavior can be modified in bootstrap/app.php

Here is my solution [reference: https://laracasts.com/discuss/channels/general-discussion/how-i-can-change-laravel-directory-structure?page=1]

Solution:

Core/Application.php

<?php

namespace Core;

use Illuminate\Foundation\Application as IlluminateApplication;

class Application extends IlluminateApplication
{
    protected $appPath = __DIR__;
}
Run Code Online (Sandbox Code Playgroud)

bootstap/app.php

$app = new \Core\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
Run Code Online (Sandbox Code Playgroud)