require(vendor / autoload.php):ストリームを開くことができませんでした

2016年12月18日に質問されました。  ·  閲覧回数 509.5k回  ·  ソース

adrTuIPKJ44 picture
2016年12月18日

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

確かに、このエラー

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

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

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

require 'vendor/autoload.php';

したがって、コンピュータのどこかに/vendor/autoload.phpファイルが必要だと思います(composerをインストールしてcomposer require phpmailer/phpmailer )。

そこで、Windowsコマンドラインでdir /s autoload.phpを使用してこのファイルを探し、ここで見つけました: C:\Windows\SysWOW64\vendor\autoload.php

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

回答

Synchro picture
2016年12月18日
277

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

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

C:\Windows\SysWOW64\vendor\autoload.phpあるautoload.phpは、おそらくグローバルなコンポーザーインストールです。通常、phpcs、phpunit、phpmdなどを配置します。

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

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

composer update実行すると、 composer install composer update実行されます。現在、 vendorフォルダーがない場合(プロジェクトの新規チェックアウトがある場合は通常)、フォルダーが作成されます。 、また、すでに持っているcomposer.lockファイルを上書きし、タグ付けされたパッケージバージョンを更新します。これは、潜在的に危険なことです。

同様に、現在composer.lockファイルがない場合(たとえば、プロジェクトにコミットされていない場合)、 composer installも効果的にcomposer updateます。 したがって、これらは完全に互換性がないため、2つの違いを理解することが重要です。

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

composer update ramsey/uuid

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

ライブラリが独自のcomposer.lockファイルを含まないのは通常のことです。 使用するライブラリではなく、バージョンを修正するのはアプリ次第です。 その結果、ライブラリ開発者は、アプリ開発者が必要とするよりも幅広いホスト環境との互換性を維持することが期待されています。 たとえば、ライブラリはLaravel 5、6、7、8と互換性があるかもしれませんが、それを使用するアプリは他の理由でLaravel8を必要とするかもしれません。

Composer 2.0(間もなくリリース)は、インストール結果と更新結果の間に残っている不整合を取り除く必要があります。

mbouzahir picture
2017年11月28日
48

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

composer install

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

composer dump-autoload

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

mcmacerson picture
2018年01月28日
17

@Bashirはほとんど私を助けましたが、私は必要でした:

composer update --no-scripts

私はここで答えを見つけました: https

wpcoder picture
2017年11月03日
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. パッケージの構成SecretsAccess Tokenを定義します...など。
  6. 幸せなcodinig。

C)詳細:

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

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

あなたが尋ねたのと同じ質問に対して; 答えは、 WAMP Server 64 BIT forWindowsのこのパスでした。

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

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

に:

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

C:\Users\下でWindowsユーザー名を見つけます

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

composer require <package name>

たとえば、Facebook php SDKの場合:

composer require facebook/graph-sdk

この質問をしていただきありがとうございます。

IsharaNW picture
2018年04月26日
8

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

composer install

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

composer update
Anand Mainali picture
2019年01月22日
6

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

次のコマンドを実行するだけで、このエラーを修正できます。

composer install

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

Bashir ahmad picture
2017年12月20日
3

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

Diego Santa Cruz Mendez&#250; picture
2018年10月01日
3

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

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

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

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

jjoselon picture
2017年06月14日
2

私は自分のマシンにこのパスを持っていました:

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

次に、 composer installまたは/およびcomposer updateと、次のエラーが返されました。

ErrorException ZipArchive::extractTo...

そのエラーは、パスが長すぎるためです。次のように変更しました。

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

そして働いた!

nwolybug picture
2018年05月19日
1

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

その後、composerのインストールを再び機能させることができました。 この問題の下部に私の答えが見つかりました: https