require(vendor / autoload.php):ストリームを開けませんでした


130

この問題は何度も投稿されていますが、私にとっては別の問題のようです。

確かに、このエラー

警告:require(vendor / autoload.php):ストリームを開けませんでした:3行目のC:\ xampp \ htdocs \ site_web \ send_mail.phpにそのようなファイルまたはディレクトリはありません

致命的なエラー:require():3行目のC:\ xampp \ htdocs \ site_web \ send_mail.phpで必要な 'vendor / autoload.php'(include_path = 'C:\ xampp \ php \ PEAR')を開けませんでした

この行のコードの先頭に表示されます:

require 'vendor/autoload.php';

ですから、私のコンピューターのどこかに/vendor/autoload.phpファイルがあるはずだと思います(composerをインストールして実行しましたcomposer require phpmailer/phpmailer)。

したがって、私はこのファイルを次のようdir /s autoload.phpに使用して探しました:Windowsコマンドラインで、ここで1つ見つかりました:C:\Windows\SysWOW64\vendor\autoload.php

しかし、私にとって、syswow64フォルダーにはautoload.phpで何も表示されないため、ここで何が欠けているのかわかりません。


これは、プリインストールのスクリプトセクションのcomposer.jsonファイルでphp artisanが上下にある場合にも発生する可能性があります。メンテナンスモードを実行するには、ベンダーフォルダー内のファイルが必要なようですが、まだ利用できません。
Thomas

回答:


232

不足しているのはrunningです。composer installこれにより、パッケージがインポートされ、オートロードスクリプトとともにベンダーフォルダーが作成されます。

相対パスが正しいことを確認してください。たとえば、PHPMailerのサンプルスクリプトはexamples/、プロジェクトルートの下のにあるため、そこからcomposerオートローダーをロードするための正しい相対パスはになります../vendor/autoload.php

あなたが見つけたautoload.php C:\Windows\SysWOW64\vendor\autoload.phpはおそらくグローバルなcomposerインストールです–通常、phpcs、phpunit、phpmdなどのようなものを置きます。

composer update同じではなく、おそらくあなたが使いたいものではありませ。コードが現在のパッケージバージョンでテストされているupdate場合、実行すると破損が発生する可能性があり、さらに作業とテストが必要になる可能性updateがあるため、特別な理由がない限り実行しないでください。さらに明確にするためにcomposer update、本番環境でアプリを破壊する可能性がかなり高いため、サーバーでは絶対に実行しないでください。

サーバーで実行できないため(たとえば、共有されていて、シェルにアクセスできないため)、composerを使用できないという不満をよく目にします。その場合でも、composer 引き続き使用できます。composerをローカルで実行し(そのような制限のない環境)、他のすべてのPHPスクリプトとともに生成するローカルベンダーフォルダーをアップロードします。

を実行するとcomposer update 実行されcomposer installますが、現在vendorフォルダがない場合(つまり、プロジェクトの新しいチェックアウトがある場合)はcomposer install効果的にを実行composer updateしますが、2つは確実に交換可能ではないため、両者の違いを理解することは依然として重要です。

たとえば、次のように名前を付けることで、単一のパッケージを更新することもできます。

composer update ramsey/uuid

これにより、で指定されたバージョンが再解決さcomposer.jsonれ、ベンダーフォルダーにインストールされ、composer.lock一致するようにファイルが更新されます。composer update1つのパッケージに対して特定の更新が必要なだけの場合、これは一般的な問題よりもはるかに問題を引き起こす可能性が低くなります。

Composer 2.0(近日リリース予定)では、インストールと更新の結果の間に残っている不整合が解消されます。


1
composer installを実行するにはどうすればよいですか?コマンドとして認識されていません
イヴォンヌアバロー2017年

ありがとう、それを見つけてダウンロードしました-しかし、PHPがローカルにインストールされている場所を尋ねてきます。PHPをローカル(またはComposer)にインストールしたくないので、Google Cloudアプリで実行したいだけです。
Yvonne Aburrow

私はこのドキュメントのこのビットの手順に従っています:github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow

1
PHPのためのGoogleのクラウドは、その依存関係をインストールするために作曲を提供し、あなたはそれを設定する必要があり、ここを参照してください:cloud.google.com/appengine/docs/flexible/php/...
シンクロ

2
はい、Googleクラウドを実行する必要があります。composer installそれにより、composer.jsonファイルの内容が読み取られ、すべての依存関係がvendorフォルダーにインストールされます。それが行われていない場合、私が指摘したドキュメントを読んですべてを再確認することのみを提案できます。これは、実際には「アップロード」と「デプロイメント」の違いです。
シンクロ

39

実行したときにもエラーが発生した場合

composer install

最初にこのコマンドを実行するだけです

composer dump-autoload

このコマンドは、すべてのコンパイル済みファイルとそのパスをクリーンアップします。


15

@Bashirは私を助けてくれましたが、私は必要でした:

composer update --no-scripts

私はここで答えを見つけました:https : //laracasts.com/discuss/channels/general-discussion/fatal-error-class-illuminatefoundationapplication-not-found-in-pathtoprojectbootstrapappphp-on-line-14?page=0


それが何をしているかを正確に理解していない限り、これを行わないでください。運用中のアプリを破壊する可能性はかなり高いです。
シンクロ

9

まず、コンポーザーがインストールされていることを確認してください。

composer install

すでにインストールしている場合は、コンポーザーを更新します。

composer update

1
この回答は、ユーザーに役立つように真剣な編集が必要です。提案を明確に述べ、この状況で役立つコードサンプルを提供してください。
Stefan Crain

8

適切なautoload.php構成:

A)クイックアンサー

autoload.phpパスが間違っています。すなわち。C:\Windows\SysWOW64\vendor\autoload.php 現在のところ、次のように変更する必要があります。C:\Users\<Windows User Name>\vendor\autoload.php


B)例の手順:facebook / php-graph-sdkを例に 取ります。Package Name必要に応じて変更してください。

  1. composer.exeをインストールする
  2. CMDプロンプトを開きます。+ R+タイプCMD
  3. 次のコマンドを実行します。 composer require facebook/graph-sdk
  4. PHPページにパスを含めます。 require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. 構成Secretsを定義Access Tokenし、パッケージなどを定義します。
  6. ハッピーcodinig。

C)詳細:

Windowsにcomposerをインストールすると、パッケージのこのデフォルトパスが設定されます。そこでそれらを見つけて、オートローダーのパスを含めることができます。

C:\Users\<Windows User Name>\vendor

あなたが尋ねた同じ質問について; その答えは、WAMPサーバー64ビットfor Windowsのこのパスでした。

次に、PHPアプリケーションでこれを変更します。

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

に:

require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'; 

Windowsユーザー名C:\Users\

この前に、B)で指摘したように、次のコマンドを実行する必要があります。

composer require <package name>

FacebookのPHP SDKの例:

composer require facebook/graph-sdk

この質問をしていただきありがとうございます。同様の問題を修正するのに役立ち、この簡単なチュートリアルの作成を終了したので、感謝しています。


5

Githubからプロジェクトのクローンを作成した場合、または他の場所からプロジェクトを取得した場合、このエラーが発生します。これは、ベンダーフォルダーやその他のファイルがないためです。ベンダーのフォルダには、プロジェクトに依存しているパッケージが含まれています。パッケージの依存関係はcomposer.jsonファイルに保存され、Githubへのプッシュ中にフォルダーが除外されました

このエラーを修正するには、次のコマンドを実行します。

composer install

次に、プロジェクトに必要なすべてのアセットを取得します。


3

実行しますcomposer update。それでおしまい


6
ええ、それはすでに受け入れられた答えの一部です。それを複製することのポイントは何ですか?
ニコHaase

これも悪いアドバイスであり、本番環境のアプリを破壊する可能性があります。
シンクロ

2

私のマシンにはこのパスがありました:

C:/xampp5.0/htdocs/project-recordando-symfony/project-recordando-symfony

次に、composer installor / and を実行するとcomposer update、次のエラーが返されました。

ErrorException ZipArchive::extractTo...

そのエラーは、パスが長すぎるためです。

C:/xampp5.0/htdocs/p-symfony/*

そして働いた!


1

composerを削除して適切な方法で再インストールすることで解決できました。これが私がしたことです:

  • sudo aptは作曲家を削除します
  • sudo apt autoclean && sudo apt autoremove
  • https://getcomposer.org/doc/00-intro.mdからの指示に従って グローバルにインストール:https : //getcomposer.org/installerグローバルインストール:mv composer.phar / usr / local / bin / composer(注:私はmv composer.phar / usr / bin / composerに移動する必要がありました)

その後、作曲家のインストールを再び機能させることができました。この問題の最後に私の答えが見つかりました:https : //github.com/composer/composer/issues/5510


1

まず、index.php内のルートを確認します

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

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

私の場合、ルートが機能しなかったため、ディレクトリを確認する必要がありました。


1

プロジェクトフォルダーにベンダーフォルダーがないため、次のエラーが発生しました。

警告:require(vendor / autoload.php):ストリームを開けませんでした:そのようなファイルまたはディレクトリはありません

gitからプロジェクトをダウンロードすると、プロジェクトはベンダーフォルダーなしでダウンロードされます。

/vendorLaravelが使用するすべてのクラスを含め、すべてのパッケージがそこにあるため、必要です。ベンダーディレクトリには、Composerの依存関係が含まれています。

解決策は簡単です。次のコマンドを実行するだけです。

composer update --no-scripts 
composer update
  • composer update --no-scriptscomposer.jsonファイルで定義されたスクリプトの実行をスキップします。
  • composer updatecomposer.jsonファイルで指定されている依存関係を更新します。

このコマンドを使用すると、プロジェクトにベンダーフォルダーが再作成され、その後、プロジェクトは正常に動作し始めます。


0

クローンされたリポジトリがあり、そのときにこのタイプのエラーが発生するように設定しようとした場合、ルートディレクトリにある必要がある「vendor」というディレクトリがあります。

「.gitingore」ファイルには、GITにベンダーディレクトリが含まれないようにコードが記述されているため、GITのクローンを作成した後、プロジェクトにベンダーディレクトリがないという問題に直面します。

ベンダーディレクトリを追加すると、プロジェクトが再び機能し始めます。


0

exに必要なライブラリを含むcomposer.jsonファイルを作成します。

{
    "require": {
        "mpdf/mpdf": "^6.1"
    }
}

composer.jsonが存在する場所で以下のコマンドを実行します。

composer install

Drupalの場合:

drupalのWebルートフォルダーを使用して、exのオートロードを含めます。

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/vendor/autoload.php';

他のシステムの場合:ルートフォルダー変数または場所を使用して、autoload.phpを含めます。


0

私にとっては、最初にこのコマンドを実行するだけです

composer dump-autoload

ベンダーフォルダを追加します。

次に、このコマンドを実行します

composer update --no-scripts

composerを更新します。


0

このエラーは、いくつかのファイルが欠落しているために発生し、主な理由は「Composer」です

ここに画像の説明を入力してください

まず、CMDでこれらのコマンドを実行します

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

次に、新しいプロジェクトの
例を作成します。

D:/Laravel_Projects/New_Project
laravel new New_Project

その後、サーバーを使用して起動します

php artisan serve

-1

php.iniのauto_prepend_fileプロパティを変更します

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =

これは質問とどのように関連していますか?完全に他の解決策で受け入れられた回答があります
ニコ・ハーゼ

今朝、次のようなエラーがありました。「警告:不明:ストリームを開けませんでした:0の行に不明なファイルまたはディレクトリがありません」したがって、このソリューションを作成しました。
ercvs 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.