web-dev-qa-db-fra.com

Impossible de faire Laravel 4 pour travailler sur localhost

J'essaie Laravel pour la première fois après avoir lu une annonce de la sortie de la version bêta de Laravel4.

J'ai suivi ces étapes j'ai installé composer et laravel avec toutes les dépendances dont il avait besoin. J'ai mis le laravel dans mon ~/public_html répertoire - comme j'ai l'habitude de le faire avec Codeigniter, mais je pense que quelque chose ne va pas ici.

Si je pointe le navigateur vers http://localhost/~carlo/laravel-develop/, il affiche simplement le contenu du répertoire.

Ensuite, alors que sur le système de fichiers, j'avais un laravel-develop/public dossier, il n'est pas apparu sur le navigateur.

J'ai trouvé que changer le .htaccess comme ça:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

a entraîné une erreur lorsque j'essaie d'accéder au dossier public. L'erreur:

ErrorException: Avertissement: file_put_contents (/ home/carlo/public_html/laravel-develop/app/config /../ storage/meta/services.json): échec de l'ouverture du flux: autorisation refusée dans/home/carlo/public_html/laravel- develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php line 77

un autre:

/home/carlo/public_html/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php ligne 77

puis une longue liste d'erreurs. Le dernier est:

require_once ('/ home/carlo/public_html/laravel-develop/start.php') dans /home/carlo/public_html/laravel-develop/public/index.php ligne 53

32
Carlo

Essayez de modifier les autorisations de dossier pour le dossier storage à l'aide du terminal:

chmod -R 777 storage

Plus d'informations à ce sujet peuvent être trouvées ici .

70
adridev

Vos erreurs sont survenues car laravel n'a pas pu écrire dans le dossier app/storage. Le reste n'était qu'une trace de pile. Pour rendre le dossier de stockage accessible en écriture, cd dans votre dossier app puis exécutez :

chmod -R 777 storage
16
socketman

manière de production, complexité modérée pour les personnes qui ne connaissent pas Unix, mais plus sécurisé:

  1. Passez en mode super utilisateur (Sudo -s ou su).
  2. Créer un groupe web (groupadd web)
  3. Ajoutez votre utilisateur principal au groupe web (supposez que votre utilisateur est cool_user, alors exécutez usermod -a -G web cool_user)
  4. Ajoutez php-fpm ou un utilisateur de serveur Web (si php est utilisé comme module SAPI) au groupe web (par exemple, sur CentOS php-fpm utilisez Apache nom d'utilisateur, donc dans la plupart des cas, cela marchera: usermod -a -G web Apache)
  5. Changez le propriétaire du groupe de répertoires racine de votre projet en web récursivement (chgrp -R web /path/to/project/root/)
  6. Accordez récursivement l'autorisation d'écriture pour le groupe (chmod -R g+w /path/to/project/root/
  7. Facultativement Pour permettre à tous les fichiers et dossiers utilisateur nouvellement créés par Apache (ou d'autres) d'être accessibles depuis votre utilisateur, faites-leur recevoir le groupe propriété identique à leur dossier parent en définissant groupid bit récursivement sur le répertoire racine de votre projet (chmod -R g+s /path/to/project/root/).

Voila !.

manière rapide et sale, pour ceux qui ne se soucient pas de la sécurité et veulent le faire fonctionner à tout prix, non sécurisé:

  1. Passez en mode super utilisateur (Sudo -s ou su).
  2. Accordez récursivement une autorisation complète (lecture, écriture, exécution) à tous les utilisateurs (chmod -R o=rwx /path/to/project/root/
11
pinepain

Dans mon cas, j'ai résolu cette erreur en modifiant dans le fichier /app/config/app.php le paramètre par défaut:

'url' => 'http://localhost',

à mon URL d'hôte virtualhost personnalisé local:

'url' => 'http://mydomain.local',

Cela semblait être LE changement essentiel qui a résolu le problème (j'ai également modifié le dossier de stockage, comme suggéré ici)

j'espère que cela aide certains d'entre vous ..

5
user2316785

ci-dessus, si vous utilisez un environnement de type virtualbox/vagrant VM, alors sur mon Mac, je devais émettre le chmod sur le système Host (mac) mais sur ma boîte Windows, il était bien émettre le chmod directement sur la machine virtuelle.

3
jacanterbury

Vous devez lire la documentation d'installation:

http://laravel.com/docs/installation#configuration

Faites attention au bit ici:

Laravel requires one set of permissions to be configured - folders within app/storage require write access by the web server.

Il y a aussi d'autres choses utiles dans ce document, alors assurez-vous de tout lire.

2
Relaxing In Cyprus

Vous devez ajouter: Options + FollowSymLinks

<IfModule mod_rewrite.c> 
RewriteEngine on 
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>
2
user1981495

J'ai eu le même problème, voici comment je le résous: Dans vos fichiers httpd-vhosts.conf vous devez ajouter les configurations à vos dossiers, c'est ce que j'ai dans le mien

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/home/carlospublic_html"
    ServerName carlos.local
    <Directory "/home/carlos/public_html">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>>
2
Flavio

La racine Web de votre serveur doit pointer vers le /public dossier de votre installation Laravel. C'est là que le index.html le fichier recide d'où Laravel est initialisé.

1
sidneydobber

J'aime mieux cette méthode que de changer les autorisations en 777. Définissez Apache pour qu'il s'exécute comme vous.

  1. Dans le terminal, tapez id pour obtenir uid=123(Myname).

  2. Ouvrez /etc/Apache2/httpd.conf et modifiez-le pour utiliser votre nom d'utilisateur.

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    
  3. Retour au terminal: Sudo apachectl restart

0
Justin

Tout d'abord, cette réponse ici vous aidera avec les autorisations. Deuxièmement, vous devrez peut-être ajouter RewriteBase ~/carlo/public_html/laravel-develop à votre .htaccess puisque vous l'exécutez à partir d'un répertoire personnel.

0
ChrisMoll

Vérification de l'exigence pour le LR4, votre serveur local doit avoir les éléments suivants: PHP> = 5.3.7 MCrypt PHP Extension

Sinon, échouera. Je suis également confronté à ce problème et je recherche maintenant un PHP et son extension pour mon XAMPP mis à jour.

0
jsd

Hé, j'ai aussi eu cette erreur et la modification des autorisations d'écriture ne semble pas fonctionner non plus. Il s'est avéré que je devais changer les paramètres d'utilisateur et de groupe dans le fichier httpd.conf d'Apache. Voici un bon tutoriel: Activer les autorisations d'écriture pour Apache intégré natif dans Mac OS X Lion

0
displayname