membutuhkan (vendor / autoload.php): gagal membuka aliran


132

Saya tahu bahwa masalah ini telah diposting berkali-kali, tetapi bagi saya tampaknya masalah ini berbeda.

Memang kesalahan ini

Peringatan: memerlukan (vendor / autoload.php): gagal membuka aliran: Tidak ada file atau direktori seperti itu di C: \ xampp \ htdocs \ site_web \ send_mail.php di baris 3

Kesalahan fatal: membutuhkan (): Gagal membuka diperlukan 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') di C: \ xampp \ htdocs \ site_web \ send_mail.php di baris 3

muncul di awal kode saya dari baris ini:

require 'vendor/autoload.php';

Jadi, saya kira pasti ada file /vendor/autoload.php di suatu tempat di komputer saya (saya telah menginstal komposer dan menjalankan composer require phpmailer/phpmailer).

Jadi, saya mencari file ini menggunakan: dir /s autoload.phpdi baris perintah Windows, dan menemukan satu di sini: C:\Windows\SysWOW64\vendor\autoload.php,

tetapi bagi saya, folder syswow64 tidak ada yang bisa dilihat dengan autoload.php , saya tidak melihat apa yang saya lewatkan di sini.


Ini juga dapat terjadi jika Anda memiliki php artisan ke atas atau ke bawah di file composer.json Anda di bagian skrip pada pra-instal. Tampaknya membutuhkan file di folder vendor untuk menjalankan mode pemeliharaan, yang belum tersedia.
Thomas

Jawaban:


234

Apa yang Anda lewatkan sedang berjalan composer install, yang akan mengimpor paket Anda dan membuat folder vendor, bersama dengan skrip muat otomatis.

Pastikan jalur relatif Anda benar. Misalnya, contoh skrip di PHPMailer berada examples/, di bawah akar proyek, jadi jalur relatif yang benar untuk memuat pemuat otomatis komposer dari sana adalah../vendor/autoload.php .

Autoload.php yang Anda temukan C:\Windows\SysWOW64\vendor\autoload.phpmungkin adalah instalasi komposer global - di mana Anda biasanya akan meletakkan hal-hal seperti phpcs, phpunit, phpmd dll.

composer updateadalah tidak hal yang sama, dan mungkin tidak apa yang ingin Anda gunakan. Jika kode Anda diuji dengan versi paket Anda saat ini, menjalankan updatedapat menyebabkan kerusakan yang mungkin memerlukan pekerjaan dan pengujian lebih lanjut, jadi jangan jalankan updatekecuali Anda memiliki alasan khusus dan memahami dengan tepat apa artinya. Untuk memperjelas lebih lanjut - Anda mungkin hanya boleh berlaricomposer update secara lokal, tidak pernah di server Anda karena kemungkinan besar akan merusak aplikasi dalam produksi.

Saya sering melihat keluhan bahwa orang-orang tidak dapat menggunakan komposer karena mereka tidak dapat menjalankannya di server mereka (misalnya karena itu dibagikan dan mereka tidak memiliki akses shell). Dalam hal ini, Anda bisa masih menggunakan komposer: jalankan secara lokal (lingkungan yang tidak memiliki batasan seperti itu), dan unggah folder vendor lokal yang dibuatnya bersama dengan semua skrip PHP Anda yang lain.

Menjalankan composer update juga melakukan a composer install, dan jika Anda saat ini tidak memiliki vendorfolder (yaitu Anda memiliki checkout baru untuk suatu proyek), maka composer installsecara efektif melakukan a composer update, tetapi masih penting untuk memahami perbedaan antara keduanya karena jelas tidak dapat saling dipertukarkan.

Perhatikan bahwa dimungkinkan juga untuk memperbarui satu paket dengan menamainya, misalnya:

composer update ramsey/uuid

Ini akan menyelesaikan kembali versi yang ditentukan di Anda composer.jsondan menginstalnya di folder vendor Anda, dan memperbarui composer.lockfile Anda agar sesuai. Ini jauh lebih kecil kemungkinannya untuk menimbulkan masalah daripada seorang jenderalcomposer update jika Anda hanya memerlukan pembaruan khusus untuk satu paket.

Composer 2.0 (segera keluar) harus menghapus ketidakkonsistenan yang tersisa antara hasil instalasi dan pembaruan.


1
Bagaimana cara menjalankan penginstalan komposer? Itu tidak dikenali sebagai perintah
Yvonne Aburrow

terima kasih, menemukan itu, dan telah mengunduhnya - tetapi menanyakan di mana PHP diinstal secara lokal. Saya tidak benar-benar ingin menginstal PHP secara lokal (atau Komposer). Saya hanya ingin menjalankannya di aplikasi Google Cloud saya.
Yvonne Aburrow

Saya mengikuti langkah-langkah dalam sedikit dokumentasi ini di sini: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow

1
Google cloud untuk PHP menyediakan komposer untuk menginstal dependensinya, Anda hanya perlu mengaturnya, lihat di sini: cloud.google.com/appengine/docs/flexible/php/…
Synchro

2
Ya, google cloud perlu dijalankan composer installdan kemudian akan membaca konten composer.jsonfile Anda dan menginstal semua dependensi Anda ke dalam vendorfolder. Jika tidak, saya hanya dapat menyarankan untuk membaca dokumen yang saya tunjuk dan memeriksa ulang semuanya. Ini benar-benar perbedaan antara "unggah" dan "penerapan".
Sinkronisasi

40

Jika Anda mendapatkan kesalahan juga saat Anda menjalankan

composer install

Jalankan saja perintah ini dulu

composer dump-autoload

Perintah ini akan membersihkan semua file yang dikompilasi dan jalurnya.



9

Pertama, pastikan Anda telah menginstal komposer.

composer install

Jika Anda sudah menginstal, perbarui komposer.

composer update

1
Jawaban ini membutuhkan pengeditan yang serius agar dapat membantu pengguna. Harap nyatakan saran Anda dengan jelas dan berikan contoh kode yang akan berguna dalam situasi ini.
Stefan Crain

8

autoload.phpKonfigurasi yang tepat :

A) Jawaban cepat :

Path autoload.php Anda salah. yaitu. C:\Windows\SysWOW64\vendor\autoload.php Sampai saat ini: Anda perlu mengubahnya menjadi:C:\Users\<Windows User Name>\vendor\autoload.php


B) Langkah-langkah dengan contoh: Kami akan mengambil facebook / php-graph-sdk sebagai contoh; ubah Package Namesesuai kebutuhan.

  1. Pasang composer.exe
  2. Buka CMD Prompt. + R+ tipeCMD
  3. Jalankan perintah ini: composer require facebook/graph-sdk
  4. Sertakan jalur di halaman PHP Anda: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Tentukan konfigurasi SecretsdanAccess Token untuk paket Anda ... dll.
  6. Selamat codinig.

C) Rincian lebih lanjut:

Menginstal komposer di windows akan menyetel jalur default ini untuk paket Anda; Anda dapat menemukannya di sana dan menyertakan jalur pemuat otomatis:

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

Untuk pertanyaan yang sama dengan yang Anda ajukan; jawabannya adalah jalur ini untuk WAMP Server 64 BIT untuk Windows .

Kemudian cukup di Aplikasi PHP Anda ubah ini:

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

Untuk:

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

Temukan nama pengguna windows Anda di bawahC:\Users\

Sebelum semua ini, seperti yang ditunjukkan sebelumnya di B), Anda perlu menjalankan perintah ini:

composer require <package name>

untuk facebook php SDK misalnya:

composer require facebook/graph-sdk

Terima kasih telah menanyakan pertanyaan ini; dihargai karena membantu saya memperbaiki masalah serupa dan mengakhiri penulisan tutorial sederhana ini.


5

Jika Anda telah mengkloning proyek Anda dari Github atau mendapatkannya dari tempat lain, Anda akan mengalami kesalahan ini. Itu karena Anda kehilangan folder vendor dan file lainnya. The Vendor folder berisi paket-paket yang bergantung untuk proyek Anda. Dependensi paket disimpan dalam composer.jsonfile dan folder dikecualikan saat mendorong ke Github .

Perbaiki kesalahan ini hanya dengan menjalankan:

composer install

Kemudian Anda akan mendapatkan semua aset yang dibutuhkan untuk proyek Anda.


4

lari composer update. Itu dia


6
Ya, itu sudah menjadi bagian dari jawaban yang diterima. Apa gunanya menduplikasi itu?
Nico Haase

Ini juga merupakan saran yang buruk, kemungkinan besar akan merusak aplikasi dalam produksi.
Sinkronisasi

2

Saya memiliki jalur ini di mesin saya:

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

Kemudian saya menjalankan composer installatau / composer updatedan itu mengembalikan kesalahan ini:

ErrorException ZipArchive::extractTo...

Kesalahan itu karena jalan Anda terlalu panjang, saya ubah menjadi:

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

dan berhasil!


2

Pertama, tinjau rute di dalam index.php

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

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

dalam kasus saya, rute tersebut tidak berfungsi, saya harus meninjau direktori.


Menghemat waktu saya, Terima kasih, dan Anda mendapat 1 suara positif. kerja bagus
iamnabink

1

Saya bisa menyelesaikannya dengan menghapus komposer dan menginstal ulang dengan cara yang benar. Inilah yang saya lakukan:

Saya kemudian dapat membuat penginstalan komposer berfungsi kembali. Temukan jawaban saya di bagian bawah masalah ini: https://github.com/composer/composer/issues/5510


1

Di folder proyek Anda, folder vendor hilang sehingga Anda mendapatkan kesalahan ini:

Peringatan: memerlukan (vendor / autoload.php): gagal membuka aliran: Tidak ada file atau direktori seperti itu di

Saat Anda mengunduh proyek melalui git , proyek diunduh tanpa folder vendor

Anda perlu /vendorkarena semua paket Anda ada di sana, termasuk semua kelas yang digunakan Laravel. Direktori vendor berisi dependensi Composer Anda.

Solusinya sederhana, cukup jalankan perintah ini:

composer update --no-scripts 
composer update
  • composer update --no-scriptsIni akan Melewati eksekusi skrip yang ditentukan dalam composer.jsonfile.
  • composer updateIni akan memperbarui ketergantungan Anda seperti yang ditentukan dalam composer.jsonfile.

Dengan perintah ini, Anda akan membuat ulang folder vendor di proyek Anda dan setelah itu proyek Anda akan mulai bekerja secara normal.


0

Akan ada direktori bernama "vendor" yang harus ada di direktori root Anda jika Anda memiliki repositori kloning dan mencoba mengatur saat itu jenis kesalahan ini terjadi.

File ".gitingore" memiliki kode tertulis untuk tidak menyertakan direktori vendor di GIT sehingga setelah mengkloning GIT, proyek Anda menghadapi masalah kehilangan direktori vendor.

Setelah Anda menambahkan direktori vendor, proyek Anda akan mulai bekerja kembali.


0

Buat file composer.json dengan pustaka yang diperlukan misalnya:

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

Jalankan perintah di bawah ini di mana composer.json ada:

composer install

Dalam kasus Drupal:

Gunakan folder root web drupal untuk memasukkan autoload misalnya:

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

Dalam kasus sistem lain: Gunakan variabel atau lokasi folder root untuk menyertakan autoload.php


0

Bagi saya jalankan saja perintah ini dulu

composer dump-autoload

untuk menambahkan folder vendor.

lalu jalankan perintah ini

composer update --no-scripts

untuk memperbarui komposer.


0

Kesalahan ini terjadi karena kehilangan beberapa file dan alasan utamanya adalah " Komposer "

masukkan deskripsi gambar di sini

Pertama Jalankan perintah ini di 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');"

Kemudian Buat Proyek Baru
Contoh:

D:/Laravel_Projects/New_Project
laravel new New_Project

Setelah itu mulai server menggunakan

php artisan serve

-1

Ubah properti auto_prepend_file di php.ini

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

Bagaimana ini berhubungan dengan pertanyaan? Ada jawaban yang diterima dengan solusi yang sepenuhnya lain
Nico Haase

Saya mengalami kesalahan berikut pada pagi ini. "Peringatan: Tidak Diketahui: gagal untuk membuka aliran: Tidak ada file atau direktori seperti itu di Tidak Diketahui pada baris 0" Oleh karena itu saya menulis solusi ini.
ercvs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.