web-dev-qa-db-fr.com

Obtenir une erreur de 500 serveur interne sur Laravel 5+ Ubuntu 14.04

J'ai installé Laravel plusieurs fois sur le système d'exploitation Windows mais ce type de problème ne s'est jamais produit. Ce serveur interne 500 se produit généralement lorsque votre module "mod_rewrite" n'est pas activé. 

Cependant, sur Ubuntu 14.04, ce problème me donne mal à la tête. J'ai installé rewrite_mod mais cela ne fonctionne pas non plus. J'ai donné accès à tous mes dossiers et fichiers à l'intérieur de i.e.

/ var/www/html/laravel_project

Cela ne fonctionne toujours pas. Changé .htaccess aussi de l'original à celui-ci.

    +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

J'ai aussi toutes les extensions nécessaires pour Laravel 5+. Est-ce qu'il reste quelque chose que je n'ai pas fait? 

51
DpEN

Enfin surmonté le problème

  • Ce n'était pas le fichier .htaccess qui était le problème, ni l'index.php. Le problème était sur l'accès aux fichiers et nécessitant des autorisations.

Pour résoudre le problème, j’ai exécuté les commandes suivantes via le terminal.

Sudo chmod -R 755 laravel_blog

puis tapez ci-dessous pour permettre à Laravel d'écrire le fichier dans le dossier de stockage

chmod -R o+w laravel_blog/storage

Ces deux commandes ont résolu le problème. 

174
DpEN

Après l'installation, exécutez la commande ci-dessous

Sudo chmod 755 -R laravel
chmod -R o+w laravel/storage

ici "laravel" est le nom du répertoire où laravel est installé

22
Sujendra Kumar

J'ai corrigé avec cette commande: 

   rm -rf app/storage/logs/laravel.logs
   chmod -R 777 app/storage,
   php artisan cache:clear,
   php artisan dump-autoload OR composer dump-autoload

Puis, redémarrez un serveur eather XAMPP ou un autre et cela devrait fonctionner.

11
Atdhe Kurteshi

J'ai fait face à une erreur similaire. J'ai vérifié la connexion /var/log/Apache2/error.log et trouvé une UnexpectedValueException

J'ai changé le propriétaire en mon utilisateur Apache du dossier de stockage sous le répertoire du projet.

Sudo chown -R www-data:www-data ./storage

Dans mon cas, le propriétaire du processus Apache2 est www-data; changez-le donc, vous le trouverez dans le fichier de configuration Apache2. J'espère que cela vous est utile.

11
Snriud

Peut une autre solution à ce problème:

Installez les packages requis en exécutant la commande composer à partir de la racine du projet:

Sudo composer install

METTRE À JOUR:

  • Vous ne devez pas exécuter cette commande sur un serveur de production, mais certains problèmes avec composer peuvent être résolus avec cette opération sur des envs locaux.
9
Christos Papoulas

Un débutant mais c'est ce que j'ai fait car je n'avais pas de clé

Créé le fichier .env et également exécuté

php artisan key:generate

Cela a fonctionné pour moi après avoir tiré un projet git

7
Goodlife

Essayez de vérifier si vous avez le fichier .env.

Surtout cette chose peut causer quelque chose comme ça. Essayez de créer un fichier puis copiez le tout à partir de .env.example, collez-le dans votre fichier créé et nommez-le .env. ou jsut simplement renommer le fichier .env.example à .env et exécuter php artisan key:generate

5
Lesther Bualan

Parfois, il y a un problème avec la version php. Nous devons changer la version php du serveur. Il suffit de noter ci-dessous la chaîne dans .htaccess file:

AddHandler application/x-httpd-php5 .php
4
Riyan Sheikh

J'avais PHP 7.0 et PHP 7.1 installés et j'utilisais PHP 7.1 en ligne de commande et PHP 7.0 était activé sur Apache, ce désordre peut poser des problèmes lorsque vous utilisez Laravel Framework et localhost Apache2 avec laravel.

Vérifiez d'abord votre fichier de composition pour voir votre version PHP.

"php": "^7.1.3",
"laravel/framework": "5.6.*",

Vérifiez votre version actuelle de PHP en ligne de commande

php -v

Vérifiez votre version actuelle de PHP activée sur Apache, je l'ai fait en utilisant le navigateur.

http://localhost

Si ce n'est pas la même chose, désactivez la version actuelle et activez la plus récente. 

Sudo a2dismod php7.2

Sudo a2enmod php7.1

Sudo service Apache2 restart

Après cela, changez les permissions du dossier

Sudo chmod 755 -R blog

pour le dossier de stockage

chmod -R o+w blog/storage
3
Saulo Campos

Exécutez ces deux commandes dans le répertoire où Laravel est installé: 

Sudo chmod 755 -R DIRECTORY_NAME
chmod -R o+w DIRECTORY_NAME/storage

Puis effacez le cache et videz le chargement automatique:

php artisan cache:clear
composer dump-autoload
3
Ayman

J'ai fait face à ce problème plusieurs fois. Essayez l'une de ces étapes, cela m'a beaucoup aidé. Peut-être que cela vous aidera également. 

  1. Tout d'abord, vérifiez vos autorisations de fichiers. 
  2. Pour corriger les autorisations sur les fichiers Sudo chmod 755 -R votre_projet
  3. Ensuite, chmod -R o + w votre_projet/stockage pour écrire le fichier dans le dossier de stockage.
  4. php artisan cache: effacer
    composer dump-autoload
  5. clé artisan php: générer
  6. Puis vérifiez les exigences du serveur selon les exigences de Laravel. 
  7. Plusieurs fois vous avez cette erreur à cause de la version php . Essayez de changer votre version de php dans cpanel.
  8. Puis configurez votre fichier .htaccess correctement
1
Anand Mainali

Un problème fréquent lors de l'utilisation de git:

Laravel's .gitignore ignores the .env file which when missing generates this error

Résolu cela en ajoutant manuellement un fichier .env sur le serveur ou en le téléchargeant via FTP

1
Maroun Melhem

Exécutez ces deux commandes sur la racine de laravel

find * -type d -print0 | xargs -0 chmod 0755 # pour les répertoires

trouver . -type f -print0 | xargs -0 chmod 0644 # pour les fichiers

1
Davinder Singh

Pour ceux d'entre vous qui, comme moi, ont encore des erreurs après avoir essayé toutes les autres réponses:

Vérifiez la version de php utilisée par Apache, le dernier fichier laravel ne fonctionne qu'avec php7.1 .

Sudo a2dismod php[yourversion]
Sudo a2enmod php7.1
Sudo systemctl restart Apache2

j'espère que cela t'aides

1
Ika Tobihi

J'ai un problème similaire avec un hôte de partage. J'avais 500 erreur. Je viens de corriger en vérifiant la version de Laravel et la version PHP. L'erreur était due au fait que Laravel 5.6 ne fonctionnait pas sous PHP 7.0.x. Une fois que je le sais, je reconfigure le projet en Laravel 5.5 compatible avec PHP 7.0.x. Une autre raison qui me cause parfois des problèmes est le FTP où je reçois des fichiers corrompus et que je dois télécharger le projet plusieurs fois. J'espère que cette aide vous sera utile dans le futur. Je n'ai pas trouvé autant d'informations dans ce sujet. 

1
Josean Maya

Tout d'abord, autorisez toutes les autorisations pour votre dossier de projet (disons qu'il s'appelle laravel), pour le sous-dossier de stockage et son sous-dossier de journaux et pour le sous-dossier de fournisseur (laravel/storage, laravel/storage/logs et laravel/vendor).

Ensuite, vérifiez si votre fichier .env - sinon, vous pouvez exécuter:

$ mv .env.example .env

renommer votre .env.example intégré en .env nécessaire.

Sinon, activez le mode débogage - ouvrez .env et définissez 

APP_DEBUG=true

et ouvrez laravel/config/app.php et changez

'debug' => env('APP_DEBUG', false), 

à

'debug' => env('APP_DEBUG', true),

afin que vous puissiez savoir quelle est la raison de votre erreur.

1
tsveti_iko

J'ai fait face à ce problème et résolu par la mise à niveau ma version php dans Apache jusqu'à la version 5.6.x.

0
Mahmoud Niypoo

J'ai lu tous les commentaires et suggestions. 500 - HTTP ERROR CODE représente une erreur de serveur interne.

Raisons de cette erreur:

  • Là principalement en raison de problèmes de permission
  • Variables d'environnement non trouvées ou fichier .env introuvable dans votre répertoire racine
  • Problème d'extensions PHP
  • Problème de base de données

Correction:

  • Définissez les autorisations appropriées:
    • Exécutez ces commandes (Ubuntu/Debian)
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
  • Si le fichier . Env n'existe pas, créez-en un par touch .env et collez vos variables d'environnement, puis exécutez
   php artisan key:generate
   php artisan cache:clear
   php artisan config:clear
   composer dump-autoload
  • Vérifiez votre fichier php.ini et décommentez les extensions dont vous avez besoin (dans certains cas, vous devez installer l'extension en exécutant cette commande apt-get install php7.2-[extension-name]
  • Vérifiez les informations d'identification et les valeurs de votre base de données dans le fichier .env. Et accordez des autorisations à l'utilisateur de la base de données pour cette base de données.

Voici un problème courant que vous rencontrerez probablement lors du déploiement de votre application laravel et que vous commencerez à obtenir toutes ces commandes. Je vous suggère donc de créer un script qui vous fera gagner du temps.

0
Smit Patel

Je viens de lancer la commande suivante:

php artisan passport:install

J'utilisais passeport pour exécuter mon application entièrement basée sur les API et Vue.js. Laravel a bien fonctionné, mais chaque fois que j'ai essayé de me connecter via mon API, j'obtiens l'erreur. Après avoir exécuté la commande et mis à jour les paramètres client_id et client_secret sur mes fichiers Laravel, puis transmis les nouvelles mises à jour au serveur actif, le problème a été résolu. Dans mon modèle d'utilisateur, j'ai un script comme suit:

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);
}

Je viens de mettre à jour le client_id et le client_secret seulement puis enregistré. Depuis la commande passport vous donne deux clés client:

1) Client d'accès personnel (client_id & client_secret)

2) Client accordant le mot de passe (client_id & client_secret)

J'ai utilisé le client de concession de mot de passe. Espère que cela aide quelqu'un là-bas :)

0
Julian Tabona

En raison de pas le droit d'écrire le répertoire du journal.
chmod 755 stockage -R

0
George Peter

Selon les journaux: 

[06-Feb-2016 22:38:48 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:38:48 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17

Certains échecs lors de l'ouverture de fichiers dans le dossier/vendor.

En installant et en mettant à jour via composeur, j'ai finalement pu résoudre le problème.

Sudo composer install
Sudo composer update
0
tomsihap

si c'est sur un serveur live essayez ceci

<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]

ensuite, assurez-vous également que la version php de votre composer.json est la même que celle de votre serveur.

Vérifiez votre version php dans votre terminal en utilisant php -v

0
The Dead Guy

Assurez-vous que le dossier de stockage avec privilège d'écriture (chmod o + w) fonctionne pour moi comme un charme.

0
user3619249

Modifiez uniquement l'autorisation du dossier Web à l'aide de cette commande:

Sudo chmod 755 -R your_folder

0
Muhammad Shoaib