web-dev-qa-db-fra.com

Laravel 5 Impossible de détecter l'espace de noms de l'application

Je suis nouveau à Laravel 5 et j'essaye de le comprendre petit à petit et pour le moment je suis vraiment confondu avec les messages d'erreur. MVC est quelque chose de nouveau pour moi.

Ce que j'essaie de faire, c'est un système de blog pour mon site et j'ai téléchargé un package appelé "Serverfireteam/blog"; https://phppackages.org/p/serverfireteam/blog

Il s'est très bien installé, je suppose. Lorsque je vais sur http://myhost.com/public/panel/login j'obtiens l'écran de connexion mais quand je me connecte, il me donne cette erreur:

ErrorException dans Application.php ligne 1119: impossible de détecter l'espace de noms d'application. (Voir: /var/www/html/mpa2/resources/views/vendor/panelViews/dashboard.blade.php)

&&

RuntimeException dans Application.php ligne 1119: impossible de détecter l'espace de noms d'application.

Le plus drôle, c'est que cela fonctionnait bien avant, je pouvais me connecter et créer/éditer des articles de blog et je pouvais les voir aller à la base de données mysql. J'ai également pu les voir sur place. Ensuite, j'ai commencé à modifier les fichiers de vue/modèle pour intégrer la sortie du blog à la propre mise en page de mon site.

Je n'ai aucune idée de ce qui donne, j'ai essayé de chercher une solution sur google, mais aucune aide. Des idées qui pourraient être erronées?

37
mpak

D'accord, je l'ai résolu. Ce que j'ai fait pour résoudre ce problème:

composer update

m'a donné l'erreur suivante:

[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

J'ai ouvert composer.json et il y avait une virgule supplémentaire à la dernière ligne:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
}

Supprimé la virgule donc ça ressemblait à ça:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*"
}

Et le problème avait disparu.

86
mpak

version laravel: 5.8.3

[Une raison de plus]: le chemin par défaut de l'application dans composer.json est modifié

la configuration par défaut ressemble à ceci

"psr-4": {
    "App\\": "app/"
 },

Si c'est modifié pour dire,

"psr-4": {
    "Core\\": "app/Core/"
 },

les commandes make avec artisan ne fonctionneront pas, et quelques autres choses

la raison en est https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/Application.php#L296

app est statique dans le chemin, et voici où l'exception est levée https://github.com/laravel/framework/ blob/5.3/src/Illuminate/Foundation/Application.php # L114

Ce comportement par défaut peut être modifié dans bootstrap/app.php

Voici ma solution [référence: 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__;
}

bootstap/app.php

$app = new \Core\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
4
fayz

Ce qui a causé cela pour moi, c'est d'avoir commenté les lignes avec //. // peut être sur sa propre ligne ou à la fin de la ligne. Une virgule à la fin peut également provoquer cela.

La suppression des commentaires a résolu ce problème. Et/ou supprimer la virgule de fin supplémentaire.

L'erreur se produit pour la "mise à jour du compositeur" et les commandes artisanales telles que "php artisan make: controller TestsController --resource", ou "php artisan make: model Test"

1
Jonathan