2017-06-09 22 views
0

私はComposerを初めて使い、作者でクラスを自動読み込みするのに本当に苦労しています。次のプロセスでは何が欠けていますか?Composerが必要なクラスを自動読み込みしない

私はフォルダが含ま私のPHPパッケージをインストール - このように(ドキュメントルートの外にある、私はそれが重要なのかはわからない):それは、それが正常に完了し、私はプロジェクトを確認述べ

composer require monolog\monolog 

私のベンダーフォルダに追加されました。

マイ全体composer.jsonファイルは次のようになります。

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

私の全体のテストファイルは次のようになります。

<?php 

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

$log = new Logger("name"); 

?> 

そして私は、ページのロード時に、私はこのエラーを取得:

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 

このファイルには、vendor/autoload.phpファイルにはエラーが含まれていません。

私はそのまま作曲家でこれらのコマンドを実行しようとしました

composer update 
composer dump-autoload -0 

私も異なるパッケージでそれを試してみたと私は同じエラーを取得するので、私はそれが何を持っていないかなり確信していますモノログパッケージと関連付ける

ここにステップがありますか? jsonファイルで自動ロードするクラスを手動で定義する必要はありませんが、作者でそれらを必要とするのですか?

編集1:

要求されたとして、ここで私の異なるファイルへのパスです。テストページへ

パス:(ドキュメントルート外のが、私のパスが含ま中)composer.jsonファイルへ

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

パス:

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

マイベンダーのフォルダはここにある:

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

私のベンダーフォルダ内には、次のフォルダとファイルがあります。

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

。 –

+0

@AlexBlexありがとうございます。あなたがリクエストした情報を追加しました。何が見えますか? – dallin

答えて

1

次のようにあなたのqbtest.phpに自動ロードを含める必要があります。composer.jsonとあなたがvendor`ディレクトリ `を持っているディレクトリのリストへの質問の完全なパスに追加してください

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

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

うわー!それはうまくいった!理由を掘り下げた後、私は自分のインクルードパスに別の場所があることを知りませんでした。その場所には古いコンポーザーのベンダーファイルがあり、間違ったautoload.phpをロードしていました。私が何をしたとしても、それは常に私の他の場所にある古いautoload.phpをピックアップして、正しいものをロードして作業することはありませんでした!どうもありがとうございます!私はこの一日中働いています! – dallin

関連する問題