2017-06-09 4 views
0

Je suis nouveau à Composer et j'ai vraiment du mal à charger mes cours avec compositeur. Qu'est-ce qui me manque dans le processus suivant?Le compositeur ne charge pas automatiquement les classes requises

J'ai installé le package dans mon PHP inclut le dossier (ce qui est en dehors de la racine du document - Je ne sais pas si cela importe) comme ceci:

composer require monolog\monolog 

Il a déclaré qu'il a terminé avec succès et je confirme le projet a été ajouté à mon dossier de fournisseur.

Mon fichier entier composer.json ressemble à ceci:

{ 
    "require": { 
     "monolog/monolog": "^1.22" 
    } 
} 

Mon ensemble ressemble fichier de test comme celui-ci:

<?php 

require_once "vendor/autoload.php"; 
use Monolog\Logger; 

$log = new Logger("name"); 

?> 

Et je reçois cette erreur lorsque je charge la page:

Fatal error: Uncaught Error: Class 'Monolog\Logger' not found in C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php:6 Stack trace: #0 {main} thrown in C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php on line 6 

Il inclut le fichier vendor/autoload.php sans aucune erreur.

J'ai essayé d'exécuter ces commandes compositeur sans aucun changement:

composer update 
composer dump-autoload -0 

J'ai aussi essayé avec différents forfaits et je reçois la même erreur, donc je suis sûr qu'il n'a rien à faire avec le paquet monolog.

Y a-t-il un pas ici qui me manque? Je n'ai pas besoin de définir manuellement les classes à charger automatiquement dans un fichier json si j'en ai besoin dans le composeur, n'est-ce pas?

Edit 1:

Comme demandé, voici les chemins d'accès à mes fichiers différents.

Chemin vers la page de test:

C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php 

Chemin du fichier composer.json (en dehors de la racine du document, mais dans mon comprend chemin):

C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\composer.json 

Mon dossier fournisseur est ici:

C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\vendor\ 

et dans mon dossier fournisseur Je ces dossiers et fichiers:

bin/ 
composer/ 
monolog/ 
psr/ 
autoload.php 
+0

S'il vous plaît ajouter le chemin complet de la question à composer.json et la liste des répertoires que vous avez dans 'répertoire vendor'. –

+0

@AlexBlex Merci. J'ai ajouté les informations que vous avez demandées. Est-ce que quelque chose regarde? – dallin

Répondre

1

Vous devez inclure dans votre autoload qbtest.php comme suit:

require_once "../wwwincludes/vendor/autoload.php"; 
use Monolog\Logger; 

$log = new Logger("name"); 
+0

Wow! Ça a marché! Après avoir exploré pourquoi, j'ai découvert que j'avais un autre emplacement dans mon chemin d'inclusion que je ne connaissais pas, et que cet emplacement contenait un vieux fichier de fournisseur de compositeur, donc il chargeait le mauvais autoload.php. Peu importe ce que j'ai fait, il était toujours à ramasser ce vieux autoload.php dans mon autre comprend l'emplacement et ne chargerait jamais le bon et le travail!MERCI BEAUCOUP! J'ai travaillé dessus toute la journée! – dallin