Laravel 5 Failed opening required bootstrap/../vendor/autoload.php
Turns out I didn't enable openssl in my php.ini so when I created my new project with composer it was installed from source. I changed that and ran
composer update
now the vendor folder was created.
require(vendor/autoload.php): failed to open stream
What you're missing is running composer install
, which will import your packages and create the vendor folder, along with the autoload script.
Make sure your relative path is correct. For example the example scripts in PHPMailer are in examples/
, below the project root, so the correct relative path to load the composer autoloader from there would be ../vendor/autoload.php
.
The autoload.php you found in C:\Windows\SysWOW64\vendor\autoload.php
is probably a global composer installation – where you'll usually put things like phpcs, phpunit, phpmd etc.
composer update
is not the same thing, and probably not what you want to use. If your code is tested with your current package versions then running update
may cause breakages which may require further work and testing, so don't run update
unless you have a specific reason to and understand exactly what it means. To clarify further – you should probably only ever run composer update
locally, never on your server as it is reasonably likely to break apps in production.
I often see complaints that people can't use composer because they can't run it on their server (e.g. because it's shared and they have no shell access). In that case, you can still use composer: run it locally (an environment that has no such restrictions), and upload the local vendor folder it generates along with all your other PHP scripts.
Running composer update
also performs a composer install
, and if you do not currently have a vendor
folder (normal if you have a fresh checkout of a project), then it will create one, and also overwrite any composer.lock
file you already have, updating package versions tagged in it, and this is what is potentially dangerous.
Similarly, if you do not currently have a composer.lock
file (e.g. if it was not committed to the project), then composer install
also effectively performs a composer update
. It's thus vital to understand the difference between the two as they are definitely not interchangeable.
It is also possible to update a single package by naming it, for example:
composer update ramsey/uuid
This will re-resolve the version specified in your composer.json
and install it in your vendor folder, and update your composer.lock
file to match. This is far less likely to cause problems than a general composer update
if you just need a specific update to one package.
It is normal for libraries to not include a composer.lock
file of their own; it's up to apps to fix versions, not the libraries they use. As a result, library developers are expected to maintain compatibility with a wider range of host environments than app developers need to. For example, a library might be compatible with Laravel 5, 6, 7, and 8, but an app using it might require Laravel 8 for other reasons.
Composer 2.0 removed any remaining inconsistencies between install and update results; if you're running composer 1.x you should definitely upgrade.
Laravel 5.2 Installation Error: failed opening required ../vendor/autoload.php
Please use the following command:
You need to use the --prefer-dist
flag and wrap version number in a quotation.
composer create-project --prefer-dist laravel/laravel onetone "5.2.*"
Fatal error: require(): Failed opening required 'vendor/autoload.php' in Laravel project/Serpwow API
It looks like the package solved the issue in the master branch, see the comparison between the current 0.2.4 and master:
- require "vendor/autoload.php";
+ require __DIR__ . '/../../../vendor/autoload.php';
Since you should not modify any files in the vendor folder, you could instead require the latest development version until this change is tagged with a proper version number or maybe ask the maintainer to tag a release with this change:
composer require serpwow/google-search-results:"@dev-master"
Related Topics
Serializing PHP Object to Json
Group Array by Subarray Values
PHP, MySQL Error: Column Count Doesn't Match Value Count At Row 1
Generating Facebook Open Graph Meta Tags Dynamically
Fatal Error: Call to Undefined Function Mb_Detect_Encoding()
How to Access PHP With the Command Line on Windows
Parentheses Altering Semantics of Function Call Result
How to Strip a Tag and All of Its Inner HTML Using the Tag'S Id