gerektirir (vendor / autoload.php): akış açılamadı


133

Bu sayının birçok kez yayınlandığını biliyorum, ancak benim için farklı bir sorun gibi görünüyor.

Gerçekten, bu hata

Uyarı: gerekli (vendor / autoload.php): akış açılamadı: 3. satırda C: \ xampp \ htdocs \ site_web \ send_mail.php içinde böyle bir dosya veya dizin yok

Önemli hata: required (): 3. satırda C: \ xampp \ htdocs \ site_web \ send_mail.php içinde gerekli 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') açılamadı

Bu satırdaki kodumun başında görünüyor:

require 'vendor/autoload.php';

Yani, bilgisayarımın bir yerinde bir /vendor/autoload.php dosyası olması gerektiğini tahmin ediyorum (composer'ı kurdum ve çalıştırdım composer require phpmailer/phpmailer).

Yani, kullanarak bu dosya için baktı: dir /s autoload.phpWindows komut satırında ve burada bir tane buldum: C:\Windows\SysWOW64\vendor\autoload.php,

ama benim için, syswow64 klasörünün autoload.php ile görülecek hiçbir şeyi yok, burada neyi kaçırdığımı göremiyorum.


Bu aynı zamanda ön kurulumda betikler bölümünde composer.json dosyanızda php artisan yukarı veya aşağı varsa da meydana gelebilir. Henüz mevcut olmayan bakım modunu yürütmek için satıcı klasöründeki dosyalara ihtiyaç var gibi görünüyor.
Thomas

Yanıtlar:


235

Eksik olan şey çalışıyor composer install, bu da paketlerinizi içe aktaracak ve otomatik yükleme komut dosyasıyla birlikte satıcı klasörünü oluşturacak.

Göreceli yolunuzun doğru olduğundan emin olun. Örneğin PHPMailer'daki örnek betikler examples/proje kökünün altındadır, dolayısıyla composer autoloader'ı oradan yüklemek için doğru göreceli yol olacaktır ../vendor/autoload.php.

Bulduğunuz autoload.php C:\Windows\SysWOW64\vendor\autoload.phpmuhtemelen global bir besteci kurulumudur - burada genellikle phpcs, phpunit, phpmd vb. Şeyler koyarsınız.

composer updateolduğu değil aynı şey ve muhtemelen değil kullanmak istediğini. Kodunuz mevcut paket sürümlerinizle test edilirse, çalıştırmak updatedaha fazla çalışma ve test gerektirebilecek kırılmalara neden olabilir, bu updatenedenle belirli bir nedeniniz yoksa ve tam olarak ne anlama geldiğini anlamadıkça çalıştırmayın . Daha fazla açıklığa kavuşturmak için - muhtemelen yalnızca composer updateyerel olarak çalıştırmalısınız , üretimdeki uygulamaları bozma olasılığı makul olduğu için asla sunucunuzda çalıştırmayın .

Sık sık insanların composer'ı kendi sunucularında çalıştıramadıkları için kullanamadıklarına dair şikayetler görüyorum (örneğin paylaşıldığı ve kabuk erişimine sahip olmadıkları için). Bu durumda, composer'ı kullanmaya devam edebilirsiniz : yerel olarak çalıştırın (bu tür kısıtlamaları olmayan bir ortam) ve diğer tüm PHP komut dosyalarınızla birlikte oluşturduğu yerel satıcı klasörünü yükleyin.

Koşu composer update ayrıca bir gerçekleştirir composer installve şu anda bir yoksa vendorklasörü (yani bir projenin yeni bir ödeme var), sonra composer installetkili bir şekilde gerçekleştirir composer update, ancak bunlar kesinlikle oldukları gibi ikisi arasındaki farkı anlamak hala hayati değil değiştirilebilir.

Tek bir paketi adlandırarak güncellemenin de mümkün olduğunu unutmayın, örneğin:

composer update ramsey/uuid

Bu, sizde belirtilen sürümü yeniden çözecek ve composer.jsonsatıcı klasörünüze kuracak ve composer.lockdosyanızı eşleşecek şekilde güncelleyecektir . composer updateYalnızca bir paket için belirli bir güncellemeye ihtiyacınız varsa, bu bir generalden çok daha az sorunlara neden olur .

Composer 2.0 (yakında çıkacak), yükleme ve güncelleme sonuçları arasındaki kalan tutarsızlıkları gidermelidir.


1
Besteci kurulumunu nasıl çalıştırırım? Bir komut olarak tanınmadı
Yvonne Aburrow

teşekkürler, buldum ve indirdim - ama bana PHP'nin yerel olarak nerede kurulduğunu soruyor. PHP'yi yerel olarak (veya Composer) yüklemek istemiyorum Sadece Google Cloud uygulamamda çalıştırmak istiyorum.
Yvonne Aburrow

Buradaki dokümantasyondaki adımları takip ediyorum: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow

1
PHP için Google bulut, composer'ın bağımlılıklarını kurmasını sağlar, sadece onu kurmanız gerekir, buraya bakın: cloud.google.com/appengine/docs/f Flexible/php/…
Synchro

2
Evet, google bulutun çalışması gerekecek composer installve ardından composer.jsondosyanızın içeriğini okuyacak ve tüm bağımlılıklarınızı vendorklasöre yükleyecektir . Bunu yapmıyorsa, yalnızca işaret ettiğim belgeleri okumanızı ve hepsini iki kez kontrol etmenizi önerebilirim. Bu gerçekten "yükleme" ve "dağıtım" arasındaki farktır.
Synchro

40

Hatayı çalıştırdığınızda da alıyorsanız

composer install

Önce bu komutu çalıştırın

composer dump-autoload

Bu komut tüm derlenmiş dosyaları ve yollarını temizleyecektir.



9

Öncelikle besteciyi kurduğunuzdan emin olun.

composer install

Zaten yüklediyseniz, besteciyi güncelleyin.

composer update

1
Bu yanıtın bir kullanıcıya yardımcı olması için ciddi bir şekilde düzeltilmesi gerekiyor. Lütfen önerilerinizi açıkça belirtin ve bu durumda faydalı olacak kod örnekleri sağlayın.
Stefan Crain

8

Doğru autoload.phpkonfigürasyon:

A) Hızlı cevap :

Autoload.php yolunuz yanlış. yani. C:\Windows\SysWOW64\vendor\autoload.php Bugüne kadar: şu şekilde değiştirmeniz gerekiyor:C:\Users\<Windows User Name>\vendor\autoload.php


B) Örnek adımlar: Örnek olarak facebook / php-graph-sdk alacağız ; Package Namegerektiği gibi değiştirin .

  1. Composer.exe'yi yükleyin
  2. CMD İstemini açın. + R+ türüCMD
  3. Bu komutu çalıştırın: composer require facebook/graph-sdk
  4. PHP sayfanıza yolu ekleyin: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Yapılandırmayı Secretsve Access Tokenpaketiniz için tanımlayın ... vb.
  6. Mutlu kodlamalar.

C) Diğer ayrıntılar:

Composer'ı Windows'a yüklemek, paketleriniz için bu varsayılan yolu ayarlayacaktır; onları orada bulabilir ve otomatik yükleyici yolunu ekleyebilirsiniz:

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

Sorduğunuz soru için; cevap, Windows için WAMP Server 64 BIT için bu yoldur .

Daha sonra PHP Uygulamanızda bunu değiştirin:

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

Kime:

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

Windows kullanıcı adınızı altında bulunC:\Users\

Tüm bunlardan önce, daha önce B) 'de belirtildiği gibi, şu komutu çalıştırmanız gerekir:

composer require <package name>

facebook php SDK için örneğin:

composer require facebook/graph-sdk

Bu soruyu sorduğunuz için teşekkür ederiz; benzer sorunu çözmeme yardımcı olduğu ve bu basit öğreticiyi yazmayı bitirdiği için takdir edildi.


5

Projenizi Github'dan klonladıysanız veya başka bir yerden aldıysanız, bu hatayla karşılaşırsınız. Bunun nedeni, satıcı klasörünün ve diğer dosyaların eksik olmasıdır . Satıcı klasör projenize bağımlı paketleri içerir. Paket bağımlılıkları saklanır composer.jsondosya ve klasör edildi dışlanmış iken Github için bastırıyor .

Bu hatayı basitçe çalıştırarak düzeltin:

composer install

Ardından projeniz için gereken tüm varlıkları alacaksınız.


4

koş composer update. Bu kadar


6
Evet, bu zaten kabul edilen cevabın bir parçası. Kopyalamanın ne anlamı var?
Nico Haase

Aynı zamanda kötü bir tavsiye, muhtemelen üretimdeki bir uygulamayı bozabilir.
Synchro

2

Makinemde şu yol vardı:

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

Sonra koştum composer installveya / ve composer updatebu hatayı döndürdü:

ErrorException ZipArchive::extractTo...

Bu hata, yolunuzun çok uzun olması, ben şu şekilde değiştirdim:

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

ve çalıştı!


2

İlk olarak, index.php içindeki rotayı inceleyin

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

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

benim durumumda rota çalışmadı, dizinleri gözden geçirmek zorunda kaldım.


Zamanımı kurtardın, Teşekkürler ve 1 olumlu oy arkadaşın var. nice work
iamnabink

1

Besteciyi kaldırıp uygun şekilde yeniden yükleyerek çözebildim. İşte yaptığım şey:

Daha sonra besteci kurulumunu tekrar çalıştırmayı başardım. Cevabımı bu sorunun altında buldum: https://github.com/composer/composer/issues/5510


1

Proje klasörünüzde satıcı klasörü eksik, bu nedenle şu hatayı alıyorsunuz:

Uyarı: required (vendor / autoload.php): akış açılamadı: içinde böyle bir dosya veya dizin yok

Projeyi git aracılığıyla indirdiğinizde, proje satıcı klasörü olmadan indirilir

İhtiyacınız var /vendorçünkü Laravel'in kullandığı tüm sınıflar dahil tüm paketleriniz orada. Satıcı dizini, Composer bağımlılıklarınızı içerir.

Çözüm basit, sadece şu komutu çalıştırın:

composer update --no-scripts 
composer update
  • composer update --no-scriptscomposer.jsonDosyada tanımlanan komut dosyalarının yürütülmesini atlar .
  • composer updateDosyada belirtildiği gibi mevduatlarınızı güncelleyecektir composer.json.

Bu komutla, projenizdeki satıcı klasörünü yeniden oluşturacaksınız ve bundan sonra projeniz normal şekilde çalışmaya başlayacak.


0

Klonlanmış bir deponuz varsa ve bu tür bir hatanın meydana geldiği zamanı ayarlamaya çalışıyorsanız, kök dizininizde olması gereken "satıcı" adında bir dizin olacaktır.

".gitingore" dosyası, GIT'de satıcı dizinini içermeyecek şekilde kod yazdı, bu nedenle GIT'i klonladıktan sonra, projenizi eksik satıcı dizini sorunuyla karşı karşıya bıraktı.

Satıcı dizinini ekledikten sonra projeniz yeniden çalışmaya başlayacaktır.


0

Composer.json dosyası için gerekli kitaplığı oluşturun, örn:

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

Composer.json'un bulunduğu yerde aşağıdaki komutu yürütün:

composer install

Drupal durumunda:

Örneğin, otomatik yüklemeyi dahil etmek için drupal'ın web kök klasörünü kullanın:

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

Diğer sistemler durumunda: autoload.php'yi eklemek için kök klasör değişkenini veya konumunu kullanın.


0

Benim için önce bu komutu çalıştırın

composer dump-autoload

satıcı klasörü eklemek için.

sonra bu komutu çalıştırın

composer update --no-scripts

besteciyi güncellemek için.


0

Bu hata, bazı dosyaların eksik olması nedeniyle oluşur ve ana nedeni " Besteci " dir.

görüntü açıklamasını buraya girin

Önce bu komutları CMD'de çalıştırın

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');"

Sonra Yeni Bir Proje
Örneği Oluşturun :

D:/Laravel_Projects/New_Project
laravel new New_Project

Bundan sonra sunucuyu kullanarak

php artisan serve

-1

Php.ini üzerinde auto_prepend_file özelliğini değiştirin

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

Bunun soruyla nasıl bir ilişkisi var? Tamamen farklı bir çözümle kabul edilmiş bir cevap var
Nico Haase

Bu sabah şu hatayı aldım. "Uyarı: Bilinmeyen: akış açılamadı: 0 satırında Bilinmeyen'de böyle bir dosya veya dizin yok" Bu nedenle bu çözümü yazdım.
ercvs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.