Yêu cầu (nhà cung cấp / autoload.php): không thể mở luồng


130

Tôi biết rằng vấn đề này đã được đăng nhiều lần, nhưng đối với tôi nó dường như là một vấn đề khác.

Thật vậy, lỗi này

Cảnh báo: Yêu cầu (nhà cung cấp / autoload.php): không thể mở luồng: Không có tệp hoặc thư mục như vậy trong C: \ xampp \ htdocs \ site_web \ send_mail.php trên dòng 3

Lỗi nghiêm trọng: Yêu cầu (): Không thể mở yêu cầu 'nhà cung cấp / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') trong C: \ xampp \ htdocs \ site_web \ send_mail.php trên dòng 3

xuất hiện ở đầu mã của tôi từ dòng này:

require 'vendor/autoload.php';

Vì vậy, tôi đoán phải có tệp /vendor/autoload.php ở đâu đó trong máy tính của tôi (tôi đã cài đặt trình soạn thảo và chạy composer require phpmailer/phpmailer).

Vì vậy, tôi đã tìm tệp này bằng cách sử dụng: dir /s autoload.phptrong dòng lệnh Windows và tìm thấy một tệp ở đây : C:\Windows\SysWOW64\vendor\autoload.php,

nhưng đối với tôi, thư mục syswow64 không có gì để xem với autoload.php , tôi không thấy những gì tôi đang thiếu ở đây.


Điều này cũng có thể xảy ra nếu bạn có php artisan lên hoặc xuống trong tệp composer.json trong phần script được cài đặt sẵn. Dường như cần các tệp trong thư mục nhà cung cấp để thực hiện chế độ bảo trì, chưa có sẵn.
Thomas

Câu trả lời:


232

Những gì bạn đang thiếu đang chạy composer install, sẽ nhập các gói của bạn và tạo thư mục nhà cung cấp, cùng với tập lệnh tự động tải.

Hãy chắc chắn rằng đường dẫn tương đối của bạn là chính xác. Ví dụ, các tập lệnh mẫu trong PHPMailer nằm ở examples/bên dưới gốc dự án, do đó, đường dẫn tương đối chính xác để tải trình tải tự động của trình soạn thảo từ đó sẽ có ../vendor/autoload.php.

Autoload.php mà bạn tìm thấy C:\Windows\SysWOW64\vendor\autoload.phpcó lẽ là một bản cài đặt của nhà soạn nhạc toàn cầu - nơi bạn sẽ thường đặt những thứ như phpcs, phpunit, phpmd, v.v.

composer updatekhông được điều tương tự, và có lẽ không gì bạn muốn sử dụng. Nếu mã của bạn được kiểm tra với các phiên bản gói hiện tại thì việc chạy updatecó thể gây ra sự cố có thể cần thêm công việc và thử nghiệm, vì vậy đừng chạy updatetrừ khi bạn có lý do cụ thể để hiểu chính xác ý nghĩa của nó. Để làm rõ hơn - có lẽ bạn chỉ nên chạy composer updatecục bộ, không bao giờ trên máy chủ của mình vì nó có khả năng phá vỡ các ứng dụng trong sản xuất.

Tôi thường thấy những khiếu nại rằng mọi người không thể sử dụng trình soạn thảo vì họ không thể chạy nó trên máy chủ của họ (ví dụ: vì nó được chia sẻ và họ không có quyền truy cập shell). Trong trường hợp đó, bạn vẫn có thể sử dụng trình soạn thảo: chạy cục bộ (môi trường không có hạn chế đó) và tải lên thư mục nhà cung cấp cục bộ mà nó tạo cùng với tất cả các tập lệnh PHP khác của bạn.

Chạy composer update cũng thực hiện một composer installvà nếu bạn hiện không có vendorthư mục (nghĩa là bạn đã kiểm tra dự án mới), thì composer installthực hiện một cách hiệu quả composer update, nhưng vẫn rất quan trọng để hiểu sự khác biệt giữa hai vì chúng chắc chắn không thể thay thế cho nhau.

Lưu ý rằng cũng có thể cập nhật một gói bằng cách đặt tên, ví dụ:

composer update ramsey/uuid

Điều này sẽ giải quyết lại phiên bản được chỉ định trong của bạn composer.jsonvà cài đặt nó trong thư mục nhà cung cấp của bạn và cập nhật composer.locktệp của bạn cho phù hợp. Điều này ít có khả năng gây ra sự cố hơn so với chung composer updatenếu bạn chỉ cần một bản cập nhật cụ thể cho một gói.

Trình soạn thảo 2.0 (sắp ra mắt) sẽ loại bỏ mọi mâu thuẫn còn lại giữa cài đặt và cập nhật kết quả.


1
Làm cách nào để chạy cài đặt trình soạn thảo? Nó không được công nhận là một lệnh
Yvonne Aburrow

cảm ơn, đã tìm thấy nó và đã tải nó xuống - nhưng nó hỏi tôi PHP được cài đặt cục bộ ở đâu. Tôi thực sự không muốn cài đặt PHP cục bộ (hoặc Trình soạn thảo) Tôi chỉ muốn chạy nó trên ứng dụng Google Cloud của mình.
Yvonne Aburrow

Tôi đang làm theo các bước trong tài liệu này ở đây: github.com/googlecloudpl
platform / google-cloud-php

1
Google cloud cho PHP cung cấp trình soạn thảo để cài đặt các phụ thuộc của nó, bạn chỉ cần thiết lập nó, xem tại đây: cloud.google.com/appengine/docs/flexible/php/ Lỗi
Synchro

2
Có, google cloud sẽ cần chạy composer installvà sau đó nó sẽ đọc nội dung của composer.jsontệp của bạn và cài đặt tất cả các phụ thuộc của bạn vào vendorthư mục. Nếu nó không làm điều đó, tôi chỉ có thể đề nghị đọc các tài liệu tôi đã chỉ và kiểm tra lại tất cả. Đây thực sự là điểm khác biệt giữa "tải lên" và "triển khai".
Synchro

39

Nếu bạn cũng gặp lỗi khi bạn chạy

composer install

Chỉ cần chạy lệnh này trước

composer dump-autoload

Lệnh này sẽ dọn sạch tất cả các tệp được biên dịch và đường dẫn của chúng.


15

@Bashir gần như đã giúp tôi nhưng tôi cần:

composer update --no-scripts

Tôi tìm thấy câu trả lời ở đây: https://laracasts.com/discuss/channels/general-discussion/firth-error- class-illateatefoundationapplication-not- found-in- pathtoprojectbootstrapappphp-on-line-14?page=0


Đừng làm điều này trừ khi bạn hiểu chính xác những gì nó đang làm; nó hoàn toàn có khả năng phá vỡ một ứng dụng trong sản xuất.
Synchro

9

Trước tiên hãy chắc chắn rằng bạn đã cài đặt trình soạn thảo.

composer install

Nếu bạn đã cài đặt thì hãy cập nhật trình soạn thảo.

composer update

1
Câu trả lời này cần chỉnh sửa nghiêm túc để hữu ích cho người dùng. Vui lòng nêu rõ đề xuất của bạn và cung cấp các mẫu mã sẽ hữu ích trong tình huống này.
Stefan Crain

8

autoload.phpCấu hình đúng :

A) Trả lời nhanh :

Đường dẫn autoload.php của bạn là sai. I E. C:\Windows\SysWOW64\vendor\autoload.php Đến ngày: bạn cần thay đổi nó thành:C:\Users\<Windows User Name>\vendor\autoload.php


B) Các bước với ví dụ: Chúng tôi sẽ lấy facebook / php-graph-sdk làm ví dụ; thay đổi Package Namekhi cần thiết

  1. Cài đặt composer.exe
  2. Mở CMD Nhắc. + R+ loạiCMD
  3. Chạy lệnh này: composer require facebook/graph-sdk
  4. Bao gồm đường dẫn trong trang PHP của bạn: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Xác định cấu hình SecretsAccess Tokencho gói của bạn ... vv.
  6. Chúc mừng codinig.

C) Thông tin chi tiết:

Cài đặt trình soạn thảo trên windows sẽ đặt đường dẫn mặc định này cho nhịp của bạn; bạn có thể tìm thấy chúng ở đó và bao gồm đường dẫn trình tải tự động:

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

Đối với cùng một câu hỏi bạn đã hỏi; câu trả lời là đường dẫn này cho WAMP Server 64 BIT cho Windows .

Sau đó, chỉ cần trong Ứng dụng PHP của bạn thay đổi điều này:

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

Đến:

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

Tìm tên người dùng windows của bạn dướiC:\Users\

Trước tất cả điều này, như được chỉ ra trước trong B), bạn cần chạy lệnh này:

composer require <package name>

cho facebook php SDK chẳng hạn:

composer require facebook/graph-sdk

Cảm ơn bạn đã hỏi câu hỏi này; đánh giá cao vì nó đã giúp tôi khắc phục vấn đề tương tự và kết thúc bằng cách viết hướng dẫn đơn giản này.


5

Nếu bạn đã nhân bản dự án của mình từ Github hoặc nhận nó từ nơi khác, bạn sẽ gặp phải lỗi này. Đó là bởi vì bạn đang thiếu thư mục nhà cung cấp và các tệp khác. Các thư mục nhà cung cấp có chứa các gói mà phụ thuộc vào dự án của bạn. Các phụ thuộc gói được lưu trữ trong composer.jsontệp và thư mục đã bị loại trừ trong khi đẩy sang Github .

Khắc phục lỗi này bằng cách chạy đơn giản:

composer install

Sau đó, bạn sẽ nhận được tất cả các tài sản cần thiết cho dự án của bạn.


3

chạy composer update. Đó là nó


6
Vâng, đó đã là một phần của câu trả lời được chấp nhận. Điểm nào trong việc sao chép nó?
Nico Haase

Đó cũng là lời khuyên tồi, có khả năng phá vỡ một ứng dụng trong sản xuất.
Synchro

2

Tôi đã có con đường này trong máy của tôi:

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

Sau đó, tôi đã chạy composer installhoặc / composer updatevà nó đã trả về lỗi này:

ErrorException ZipArchive::extractTo...

Lỗi đó là do đường dẫn của bạn quá dài, tôi đã đổi thành:

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

và đã làm việc!


1

Tôi đã có thể giải quyết bằng cách xóa trình soạn thảo và cài đặt lại đúng cách. Đây là những gì tôi đã làm:

  • sudo apt loại bỏ nhà soạn nhạc
  • sudo apt autoclean && sudo apt autoremove
  • Được cài đặt trên toàn cầu với các hướng dẫn từ: https://getcomposer.org/doc/00-intro.md Tải xuống từ: https://getcomposer.org/installer cài đặt toàn cầu: mv composer.phar / usr / local / bin / composer ( Lưu ý: Tôi đã phải chuyển tôi sang mv composer.phar / usr / bin / composer)

Sau đó tôi đã có thể cài đặt trình soạn thảo để làm việc lại. Tìm thấy câu trả lời của tôi ở dưới cùng của vấn đề này: https://github.com/composer/composer/issues/5510


1

Đầu tiên, xem lại tuyến đường bên trong index.php

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

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

trong trường hợp của tôi tuyến đường không hoạt động, tôi phải xem lại các thư mục.


1

Trong thư mục dự án của bạn, thư mục nhà cung cấp bị thiếu nên bạn gặp lỗi này:

Cảnh báo: Yêu cầu (nhà cung cấp / autoload.php): không thể mở luồng: Không có tệp hoặc thư mục như vậy trong

Khi bạn tải xuống dự án thông qua git , dự án được tải xuống mà không có thư mục nhà cung cấp

Bạn cần /vendorbởi vì tất cả các gói của bạn đều ở đó, bao gồm tất cả các lớp mà Laravel sử dụng. Thư mục nhà cung cấp chứa các phụ thuộc Trình soạn thảo của bạn.

Giải pháp rất đơn giản, chỉ cần chạy lệnh này:

composer update --no-scripts 
composer update
  • composer update --no-scriptsNó sẽ bỏ qua việc thực thi các tập lệnh được định nghĩa trong composer.jsontập tin.
  • composer updateNó sẽ cập nhật số tiền của bạn khi chúng được chỉ định trong composer.jsontệp.

Với lệnh này, bạn sẽ tạo lại thư mục nhà cung cấp trong dự án của bạn và sau đó dự án của bạn sẽ bắt đầu hoạt động bình thường.


0

Sẽ có một thư mục gọi là "nhà cung cấp" cần có trong thư mục gốc của bạn nếu bạn có một kho lưu trữ nhân bản và cố gắng thiết lập thời gian xảy ra loại lỗi này.

Tệp ".gitingore" có mã được viết để không bao gồm thư mục nhà cung cấp trên GIT vì vậy sau khi nhân bản GIT, dự án của bạn phải đối mặt với vấn đề thiếu thư mục nhà cung cấp.

Khi bạn thêm thư mục nhà cung cấp, dự án của bạn sẽ bắt đầu hoạt động trở lại.


0

Tạo tệp composer.json với thư viện cần thiết cho ví dụ:

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

Thực hiện lệnh dưới đây nơi composer.json tồn tại:

composer install

Trong trường hợp của Drupal:

Sử dụng thư mục gốc của drupal để bao gồm tự động tải cho ví dụ:

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

Trong trường hợp các hệ thống khác: Sử dụng biến hoặc vị trí thư mục gốc để bao gồm autoload.php


0

Đối với tôi Chỉ cần chạy lệnh này trước

composer dump-autoload

để thêm thư mục nhà cung cấp.

sau đó chạy lệnh này

composer update --no-scripts

để cập nhật nhà soạn nhạc.


0

Lỗi này xảy ra do thiếu một số tệp và lý do chính là "Trình soạn thảo "

nhập mô tả hình ảnh ở đây

Đầu tiên Chạy các lệnh này trong 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');"

Sau đó, tạo một dự án mới
Ví dụ:

D:/Laravel_Projects/New_Project
laravel new New_Project

Sau đó, khởi động máy chủ bằng cách sử dụng

php artisan serve

-1

Thay đổi thuộc tính auto_prepend_file trên php.ini

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

Làm thế nào điều này liên quan đến câu hỏi? Có một câu trả lời được chấp nhận với một giải pháp hoàn toàn khác
Nico Haase

Tôi đã có lỗi sau vào sáng nay. "Cảnh báo: Không biết: không thể mở luồng: Không có tệp hoặc thư mục như vậy trong Unknown trên dòng 0" Do đó tôi đã viết giải pháp này.
ercvs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.