require (vendor / autoload.php): не удалось открыть поток


132

Я знаю, что эта проблема публиковалась много раз, но для меня это другая проблема.

Действительно, эта ошибка

Предупреждение: require (vendor / autoload.php): не удалось открыть поток: такого файла или каталога нет в C: \ xampp \ htdocs \ site_web \ send_mail.php в строке 3

Неустранимая ошибка: require (): Не удалось открыть необходимый 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') в C: \ xampp \ htdocs \ site_web \ send_mail.php в строке 3

появляется в начале моего кода из этой строки:

require 'vendor/autoload.php';

Итак, я предполагаю, что где-то на моем компьютере должен быть файл /vendor/autoload.php (я установил композитор и запустил composer require phpmailer/phpmailer).

Итак, я посмотрел этот файл с помощью: dir /s autoload.phpв командной строке Windows , и нашел здесь: C:\Windows\SysWOW64\vendor\autoload.php,

но для меня в папке syswow64 нечего видеть с autoload.php , я не вижу, что мне здесь не хватает.


Это также может произойти, если у вас есть php artisan вверх или вниз в вашем файле composer.json в разделе сценариев при предварительной установке. Кажется, нужны файлы в папке поставщика для выполнения режима обслуживания, который пока недоступен.
Thomas

Ответы:


234

То, что вам не хватает, - это запуск composer install, который импортирует ваши пакеты и создаст папку поставщика вместе со сценарием автозагрузки.

Убедитесь, что ваш относительный путь правильный. Например, примеры сценариев в PHPMailer находятся examples/ниже корня проекта, поэтому правильный относительный путь для загрузки автозагрузчика композитора оттуда будет ../vendor/autoload.php.

Вы нашли C:\Windows\SysWOW64\vendor\autoload.phpautoload.php, вероятно, это глобальная установка композитора, куда вы обычно помещаете такие вещи, как phpcs, phpunit, phpmd и т. Д.

composer updateэто не то же самое, и, вероятно, не то, что вы хотите использовать. Если ваш код протестирован с вашими текущими версиями пакета, запуск updateможет вызвать сбои, которые могут потребовать дальнейшей работы и тестирования, поэтому не запускайте, updateесли у вас нет конкретной причины и вы не понимаете, что это означает. Для дальнейшего уточнения - вам, вероятно, следует запускать только composer updateлокально, а не на вашем сервере, так как это с большой вероятностью приведет к поломке приложений в производственной среде.

Я часто вижу жалобы на то, что люди не могут использовать композитор, потому что они не могут запустить его на своем сервере (например, потому что он общий и у них нет доступа к оболочке). В этом случае вы все равно можете использовать композитор: запустите его локально (среда, в которой нет таких ограничений) и загрузите папку локального поставщика, которую он генерирует вместе со всеми другими вашими сценариями PHP.

При запуске composer update также выполняется a composer install, и если у вас в настоящее время нет vendorпапки (т.е. у вас есть новая проверка проекта), то composer installэффективно выполняет a composer update, но все же важно понимать разницу между ними, поскольку они определенно не взаимозаменяемы.

Обратите внимание, что также можно обновить отдельный пакет, присвоив ему имя, например:

composer update ramsey/uuid

Это повторно разрешит версию, указанную в вашем, composer.jsonи установит ее в папке вашего поставщика, а также обновит ваш composer.lockфайл для соответствия. Это гораздо менее вероятно, чем общее, composer updateесли вам просто нужно конкретное обновление для одного пакета.

Composer 2.0 (скоро выйдет) должен устранить все оставшиеся несоответствия между результатами установки и обновления.


1
Как запустить установку композитора? Это не признано командой
Ивонн Абурроу

спасибо, нашел и загрузил, но он спрашивает меня, где локально установлен PHP. Я действительно не хочу устанавливать PHP локально (или Composer), я просто хочу запустить его в своем приложении Google Cloud.
Ивонн Абурроу

Я следую шагам, описанным в этой части документации здесь: github.com/googlecloudplatform/google-cloud-php
Ивонн Абурроу,

1
Облако Google для PHP предоставляет композитору для установки его зависимостей, вам просто нужно его настроить, см. Здесь: cloud.google.com/appengine/docs/f flexible/php/…
Synchro

2
Да, нужно будет запустить облако Google, composer installи оно затем прочитает содержимое вашего composer.jsonфайла и установит все ваши зависимости в vendorпапку. Если он этого не делает, я могу только предложить прочитать документы, на которые я указал, и перепроверить все это. Это действительно различие между «загрузкой» и «развертыванием».
Synchro

40

Если вы получаете сообщение об ошибке также при запуске

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


Не делайте этого, если вы точно не понимаете, что он делает; весьма вероятно, что приложение в рабочей среде сломается.
Synchro

9

Сначала убедитесь, что вы установили композитор.

composer install

Если вы уже установили, обновите composer.

composer update

1
Этот ответ требует серьезного редактирования, чтобы быть полезным для пользователя. Пожалуйста, четко сформулируйте свои предложения и предоставьте примеры кода, которые были бы полезны в этой ситуации.
Стефан Крейн

8

Правильная autoload.phpконфигурация:

А) Быстрый ответ :

Ваш путь autoload.php неверен. то есть. C:\Windows\SysWOW64\vendor\autoload.php На сегодняшний день: вам нужно изменить его на:C:\Users\<Windows User Name>\vendor\autoload.php


Б) Шаги с примером: в качестве примера возьмем 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 установит этот путь по умолчанию для ваших пакетов; вы можете найти их там и указать путь автозагрузчика:

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

По тому же вопросу, который вы задали; ответ был этот путь для WAMP Server 64 BIT для 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

Тогда вы получите все необходимое для вашего проекта.


4

беги composer update. это оно


6
Да, это уже часть принятого ответа. Какой смысл его дублировать?
Нико Хаасе

Это также плохой совет, который может сломать работу приложения.
Synchro

2

У меня был этот путь в моей машине:

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

Затем я запустил composer installили / и composer updateвернул эту ошибку:

ErrorException ZipArchive::extractTo...

Эта ошибка связана с тем, что ваш путь слишком длинный, я изменил его на:

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

и сработало!


2

Сначала просмотрите маршрут внутри index.php

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

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

в моем случае маршрут не работал, пришлось просматривать справочники.


Сэкономил мое время, спасибо, и ты получил 1 голос "за". хорошая работа
iamnabink

1

Я смог решить, удалив композитор и переустановив правильный способ. Вот что я сделал:

  • sudo apt remove композитор
  • 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

В папке вашего проекта отсутствует папка поставщика, поэтому вы получили эту ошибку:

Предупреждение: require (vendor / autoload.php): не удалось открыть поток: нет такого файла или каталога в

Когда вы загружаете проект через git , проект загружается без папки vendor

Вам нужно, /vendorпотому что там есть все ваши пакеты, включая все классы, которые использует Laravel. Каталог vendor содержит ваши зависимости Composer.

Решение простое, просто запустите эту команду:

composer update --no-scripts 
composer update
  • composer update --no-scriptsПропускает выполнение скриптов, определенных в composer.jsonфайле.
  • composer updateОн обновит ваши зависимости, как они указаны в composer.jsonфайле.

С помощью этой команды вы повторно создадите папку vendor в своем проекте, и после этого ваш проект начнет нормально работать.


0

Будет каталог с именем «vendor», который должен находиться в вашем корневом каталоге, если у вас есть клонированный репозиторий и вы пытаетесь настроить это время для возникновения этого типа ошибки.

В файле ".gitingore" написан код, исключающий включение каталога поставщика в GIT, поэтому после клонирования GIT ваш проект столкнется с проблемой отсутствия каталога поставщика.

Как только вы добавите каталог поставщика, ваш проект снова начнет работать.


0

Создайте файл composer.json с необходимой библиотекой, например:

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

Выполните команду ниже, если существует composer.json:

composer install

В случае Drupal:

Используйте корневую веб-папку drupal, чтобы включить автозагрузку, например:

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

В случае других систем: используйте переменную корневой папки или местоположение, чтобы включить autoload.php


0

Для меня просто запустите эту команду сначала

composer dump-autoload

чтобы добавить папку vendor.

затем запустите эту команду

composer update --no-scripts

обновить композитор.


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

Измените свойство auto_prepend_file на php.ini

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

Как это связано с вопросом? Есть принятый ответ с совершенно другим решением
Нико Хаасе

Сегодня утром у меня была следующая ошибка. «Предупреждение: Неизвестно: не удалось открыть поток: Нет такого файла или каталога в Неизвестном в строке 0» Поэтому я написал это решение.
ercvs
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.