вимагати (vendor / autoload.php): не вдалося відкрити потік


130

Я знаю, що це видання було розміщено багато разів, але для мене це здається іншою проблемою.

Дійсно, ця помилка

Попередження: вимагаю (vendor / autoload.php): не вдалося відкрити потік: Немає такого файлу чи каталогу в C: \ xampp \ htdocs \ site_web \ send_mail.php у рядку 3

Фатальна помилка: вимагаю (): Не вдалося відкрити "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 , я не бачу, чого мені тут не вистачає.


Це також може статися, якщо у файлі composer.json у розділі сценаріїв перед попередньою установкою є php artisan. Здається, потрібні файли в папці постачальника для виконання режиму обслуговування, який поки недоступний.
Томас

Відповіді:


234

Те, що вам не вистачає, - це запуск composer install, який імпортуватиме ваші пакунки та створить папку постачальника разом із сценарієм автоматичного завантаження.

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

Autoload.php, який ви знайшли, C:\Windows\SysWOW64\vendor\autoload.php- це, ймовірно, глобальна композиційна композиція - куди зазвичай ви розміщуєте такі речі, як phpcs, phpunit, phpmd тощо.

composer updateце не те саме, і, мабуть, не те, що ви хочете використовувати. Якщо ваш код протестований у вашій поточній версії пакета, то запущене updateможе спричинити зриви, які можуть вимагати подальшої роботи та тестування, тому не запускайте, updateякщо у вас немає конкретної причини та точно зрозуміти, що це означає. Щоб уточнити далі - вам, ймовірно, слід лише колись працювати composer updateлокально, ніколи на своєму сервері, оскільки цілком ймовірно зламати додатки у виробництві.

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

Біг composer update також виконує composer install, і якщо у вас немає vendorпапки (тобто у вас є нова перевірка проекту), то вона composer installефективно виконує composer update, але все одно важливо зрозуміти різницю між ними, оскільки вони точно не є взаємозамінними.

Зауважте, що також можливо оновити один пакет, назвавши його, наприклад:

composer update ramsey/uuid

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

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


1
Як запустити встановлення композитора? Це не визнано командою
Івонна Абруро

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

Я дотримуюся кроків у цій документації тут: github.com/googlecloudplatform/google-cloud-php
Івон Абруро

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

2
Так, хмара google потрібно буде запустити, composer installі вона прочитає вміст вашого composer.jsonфайлу та встановить усі ваші залежності в vendorпапку. Якщо це не робиться, я можу запропонувати лише прочитати документи, на які я вказував, і двічі перевірити це. Це дійсно відмінність "завантаження" та "розгортання".
Синхро

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


Не робіть цього, якщо ви точно не розумієте, що це робить; цілком ймовірно зламати додаток у виробництві.
Синхро

9

Спочатку переконайтеся, що ви встановили композитор.

composer install

Якщо ви вже встановили, то оновіть композитора.

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. Щасливий кодиніг.

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
Так, це вже частина прийнятої відповіді. Який сенс у його дублюванні?
Ніко Хааз

Це також погана порада, яка може зламати додаток у виробництві.
Синхро

2

У мене в цій машині був цей шлях:

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

Потім я побіг composer installабо / composer updateі він повернув цю помилку:

ErrorException ZipArchive::extractTo...

Ця помилка через те, що ваш шлях занадто довгий, я змінив:

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

і працювали!


1

Мені вдалося вирішити, видаливши композитора та перевстановивши належним чином. Ось що я зробив:

  • sudo apt видалити композитор
  • 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/isissue/5510


1

Спочатку перегляньте маршрут всередині index.php

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

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

у моєму випадку маршрут не працював, мені довелося переглянути каталоги.


1

У папці проекту папка постачальника відсутня, тому ви отримали цю помилку:

Попередження: вимагаю (vendor / autoload.php): не вдалося відкрити потік: Немає такого файлу чи каталогу в

Коли ви завантажуєте проект через git , проект завантажується без папки постачальника

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

Рішення просте, просто запустіть цю команду:

composer update --no-scripts 
composer update
  • composer update --no-scriptsВін пропускає виконання сценаріїв, визначених у composer.jsonфайлі.
  • composer updateВін оновить ваші залежності, як вони вказані у composer.jsonфайлі.

За допомогою цієї команди ви знову створите папку постачальника у своєму проекті, після чого ваш проект почне працювати нормально.


0

У вашій кореневій директорії буде каталог, який називається "постачальник", якщо у вас є клонований сховище і намагається налаштувати в цей час подібні помилки.

Файл ".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

щоб додати папку постачальника.

потім запустіть цю команду

composer update --no-scripts

оновити композитора.


0

Ця помилка виникає через відсутність деяких файлів, а головна причина - " Композитор "

введіть тут опис зображення

Спочатку запустіть ці команди в 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.