Reputation: 4364
I have installed Laravel many times on Windows OS but never had this problem.
However, on Ubuntu 14.04 I am getting a 500 Internal Server Error, and messages like this in my logs:
[Wed Jul 22 10:20:19.569063 2015] [:error] [pid 1376] [client 127.0.0.1:52636] PHP Fatal error: require(): Failed opening required '/var/www/html/laravel_blog/../bootstrap/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/laravel_blog/index.php on line 22
Previously I've had problems when mod_rewrite was not installed or set up properly, but I have installed it and it is not working. Changed .htaccess as well from original to this.
+FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
I've given access to all my folders and files inside i.e.
/var/www/html/laravel_project
I have all the necessary extensions needed for Laravel 5+ as well. Is there something left that I didn't do?
Upvotes: 132
Views: 677395
Reputation: 11384
What should be in the .env hasn't been explicitly stated in other solutions, and thought I'd boil it down to the sentence above.
This fixed my 500 error on a fresh install of Laravel.
Steps:
touch .env
)APP_KEY=
php artisan key:generate
More .env paramaters:
As a reference, here's the official .env with useful baseline parameters. Copy-paste what you need:
https://github.com/laravel/laravel/blob/master/.env.example
Notes:
My particular installation didn't include any .env whatsoever (example or otherwise)
Simply having a blank .env does not work.
A .env containing parameters, but no APP_KEY
parameter, does not work.
Bug?: When generating an app key in terminal, it seems to falsely report success, however no key will actually get placed in the .env if the file is missing a line starting with APP_KEY=
.
Upvotes: 28
Reputation: 361
php artisan require APP_KEY in .env file. So firstly create .env file in root,
sudo nano .env
and add APP_KEY= in first line, save the file and run
sudo php artisan key:generate
Upvotes: 4
Reputation: 658
run these commands
1. composer install
2. mv .env.example .env
3. php artisan cache:clear
4. composer dump-autoload
5. php artisan key:generate
I had this problem ...
Upvotes: 12
Reputation: 68
Check if your .env file is present or not in file structure. if not, follow the procedures:
cp .env.example .env
from projects root directory.php artisan key:generate
Thanks.
Upvotes: 2
Reputation: 324
If you're facing this issue on the live server then the best way is to add the below-mentioned routes on the web.php file and then run all the routes through URL.
Most of the time this error is because of caches issues and once you clear all the caches - then this error will be solved and you can see to updates codes result.
//Clear Cache facade value:
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
return '<h1>Cache facade value cleared</h1>';
});
//Clear Route cache:
Route::get('/route-clear', function() {
$exitCode = Artisan::call('route:clear');
return '<h1>Route cache cleared</h1>';
});
//Clear View cache:
Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
return '<h1>View cache cleared</h1>';
});
//Clear Config cache:
Route::get('/config-clear', function() {
$exitCode = Artisan::call('config:clear');
return '<h1>Config cleared</h1>';
});
Upvotes: 0
Reputation: 2844
Create .env
file with the below cmd command:
cp .env-example .env
Then generate a key for your project:
php artisan key:generate
After that clear your caches using the below commands:
//---Delete Configuration Cahce
php artisan config:cache
//---Clear Application Cache
php artisan cache:clear
Upvotes: 9
Reputation: 2844
First, if there is not .env
file in your Laravel repository. Copy the .env.example
file using the following cmd command cp .env.example .env
and open .env
file and apply your configuration if needed.
Run these commands:
//---Generate Key in your project
php artisan key:generate
//---Flush the application cache
php artisan cache:clear
//---Remove the configuration cache file
php artisan config:cache
php artisan config:clear
//---Regenerates the list of all classes that need to be included in the project
composer dump-autoload
//---Restart your Server
php artisan serve
Upvotes: 5
Reputation: 368
I fixed this problem by this commands:
mv .env.example .env
php artisan cache:clear
composer dump-autoload
php artisan key:generate
then
php artisan serve
Upvotes: 1
Reputation: 1878
I read all the comments and suggestions. 500 - HTTP ERROR CODE represents internal server error.
Reasons for this error:
.env
file not found on your root directoryFix:
find /path/to/your/root/dir/ -type f -exec chmod 644 {} \;
find /path/to/your/root/dir/ -type d -exec chmod 755 {} \;
chown -R www-data:www-data /path/to/your/root/dir/
chgrp -R www-data storage bootstrap/cache
chmod -R ug+rwx storage bootstrap/cache
touch .env
and paste your environment variables and then run php artisan key:generate
php artisan cache:clear
php artisan config:clear
composer dump-autoload
apt-get install php7.2-[extension-name]
.env
file. And grant permissions to the database user for that database.These are some common problem you likely going to face when deploying your laravel app and once you start getting all these commands, I suggest you to make a script which will save your time.
Upvotes: 8
Reputation: 135
If you use vagrant, try this:
First remove config.php in current/vendor.
Run these command:
php artisan config:clear
php artisan clear-compiled
php artisan optimize
NOT RUN php artisan config:cache.
Hope this help.
Upvotes: 3
Reputation: 333
I just ran the following command:
php artisan passport:install
I was using passport to run my application completely based on API's and Vue.js. Laravel worked fine but everytime i tried to login via my API i would get the error. After running the command and updating the client_id and client_secret on my Laravel files then pushed the new updates to the live server, the problem was solved. In my user model i have a script as follows:
public function generateToken($request)
{
$http = new \GuzzleHttp\Client();
$response = $http->post(URL::to('/').'/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => '6',
'client_secret' => 'x3yhgWVqF8sSaMev4JI3yvsVxfbgkfRJmqzlpiMQ',
'username' => $this->email,
'password' => $request->input('password'),
'scope' => '',
],
]);
// Lets get an array instead of a stdObject so that we can return without errors
$response = json_decode($response->getBody(), true);
return oq_api_notify([
'auth' => $response, // API ACCESS TOKEN
'user' => $this->load(['settings'])->toArray(),
], 201);
}
I just updated the client_id and client_secret only then saved. Since the passport command gives you two client keys:
1) Personal access client (client_id & client_secret)
2) Password grant client (client_id & client_secret)
I used the Password grant client. Hopes this helps someone out there :)
Upvotes: 0
Reputation: 3922
Create the .env file and also run :
php artisan key:generate
This worked for me after pulling a git project.
After creating .env file and generating the key, run the code below:
php artisan cache:clear
php artisan config:clear
Upvotes: 128
Reputation: 2578
May another solution to this problem:
Install the required packages by running the composer command from the the root of the project:
sudo composer install
UPDATE:
EDIT:
Upvotes: 11
Reputation: 3552
if its on a live server try this
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
then also make sure that the php version in your composer.json is the same as that of your server.
Check your php version in your terminal using php -v
Upvotes: 3
Reputation: 4364
Finally Overcame the problem
For solving the problem i ran the following commands through terminal.
sudo chmod -R 755 laravel_blog
and then type below to allow laravel to write file to storage folder
chmod -R o+w laravel_blog/storage
This two commands solved the problem.
Upvotes: 254
Reputation: 411
I fixed with this Command:
rm -rf app/storage/logs/laravel.logs
chmod -R 777 app/storage,
php artisan cache:clear,
php artisan dump-autoload OR composer dump-autoload
Than restart a server eather XAMPP ore another one and that should be working.
Upvotes: 14
Reputation: 1073
I have faced this problem many times. Try one of these steps it helped me a lot. Maybe it will also help you.
Upvotes: 3
Reputation: 4280
A frequent issue when using git:
Laravel's .gitignore ignores the .env file which when missing generates this error
Solved this by manually adding an .env file on the server or uploading it through FTP
Upvotes: 5
Reputation: 545
Try to check if you have .env
file.
Mostly this thing can cause something like that. Try to create a file then copy everything from .env.example
, paste it to your created file and name it .env
. or jsut simply rename the .env.example
file to .env
and run php artisan key:generate
Upvotes: 35
Reputation: 352
I had PHP 7.0 and PHP 7.1 installed and I was using PHP 7.1 on command line and PHP 7.0 was enabled on Apache, that messy can bring problems when you are using Laravel Framework and localhost Apache2 with laravel.
Check your composer file first to see your PHP version.
"php": "^7.1.3",
"laravel/framework": "5.6.*",
Check your currently php version on command line
php -v
Check your currently php version enabled on Apache, I did using browser.
http://localhost
If it's not the same disable the current version and enable the newest one.
sudo a2dismod php7.2
sudo a2enmod php7.1
sudo service apache2 restart
After that change folder permissions
sudo chmod 755 -R blog
for storage folder
chmod -R o+w blog/storage
Upvotes: 5
Reputation: 21
For those of you who like me still got errors after trying all the other answers :
Check the version of php apache uses, latest laravel only works with php7.1. So you have to :
sudo a2dismod php[yourversion]
sudo a2enmod php7.1
sudo systemctl restart apache2
hope this helps
Upvotes: 1
Reputation: 191
I have a similar issue with a share Host. I was having 500 error. I just fixed by checking the Laravel version and PHP version. The error was because Laravel 5.6 doesn't run on PHP 7.0.x Once I know this I just reconfigure the project to Laravel 5.5 that is compatible with PHP 7.0.x now everything is right. Another reason I have issues sometimes is the FTP I get corrupted Files and have to upload the project more than once. Hope this help in the future I don't found so many information in this topic.
Upvotes: 1
Reputation: 21
Only change the web folder permission through this command:
sudo chmod 755 -R your_folder
Upvotes: 0
Reputation: 1720
I faced this issue and fixed by upgrade my php version in apache up to 5.6.x
Upvotes: 0
Reputation: 51
Run these two commands in the directory where Laravel is installed:
sudo chmod 755 -R DIRECTORY_NAME
chmod -R o+w DIRECTORY_NAME/storage
Then clear the cache and dump the auto load:
php artisan cache:clear
composer dump-autoload
Upvotes: 3
Reputation: 8042
First allow all permissions for your project folder (let say it's called laravel), for the storage subfolder and its logs subsubfolder and for the vendor subfolder (laravel/storage, laravel/storage/logs and laravel/vendor).
Then check if your have .env file - if not you can run:
$ mv .env.example .env
to rename your build-in .env.example to the needed .env.
Otherwise turn on the debug mode - open .env and set
APP_DEBUG=true
and open laravel/config/app.php and change
'debug' => env('APP_DEBUG', false),
to
'debug' => env('APP_DEBUG', true),
so you can find out what is the reason for your error.
Upvotes: 4
Reputation: 69
Because of no right to write the log's directory.
chmod 755 storage -R
Upvotes: 0
Reputation: 76
Sometimes there is problem with php version. We need to change php version from server. Just write down below string in .htaccess file:
AddHandler application/x-httpd-php5 .php
Upvotes: 4
Reputation: 1
Make sure storage folder with write previlege (chmod o+w), work for me like a charm.
Upvotes: 0