J'ai copié un projet Laravel à partir de mon serveur Ubuntu et j'essaie maintenant de l'exécuter sur ma machine locale (XAMPP sur Mac). Je suis aux prises avec ce problème depuis quelques jours et j'ai l'impression de devenir fou.
Lorsque je colle mon projet dans le dossier XAMPP htdocs, le message d'erreur suivant s'affiche:
Voir [bienvenue] non trouvé
Quel php artisan cache:clear
fait disparaître cela, alors j'obtiens cette erreur:
Le répertoire bootstrap/cache doit être présent et accessible en écriture.
Ensuite, je fais ceci, php artisan cache:clear
qui me donne une nouvelle erreur:
La vue de classe n'existe pas
Ensuite, peu importe ce que je fais dans le terminal ou dans l’affichage du navigateur Web, j’obtiens toujours l’erreur
La vue de classe n'existe pas
Alors j'ai essayé composer update
toujours la même erreur ..... qu'est-ce que je fais mal?
Cela a été un cauchemar.
La dernière fois que j'ai vérifié, Laravel ne fonctionnait pas sur XAMPP
mais plutôt sur la PHP
installée lors de l'installation de XAMPP
afin que le projet puisse être enregistré n'importe où sur l'ordinateur.
Etant donné que c'est le fait, vous aurez juste besoin d'une installation active PHP et vous ne copiez que les fichiers pertinents du projet sur le nouvel ordinateur GitHub
). Il ne vient pas avec des problèmes de cache alors tout ce que vous devez faire après est de
php artisan key:generate
puis composer install
ou composer update
pour obtenir les packages fournisseurs en ligne
Actuellement, mon argent consiste à choisir les fichiers appropriés et à les réinstaller Selon ma propre installation, lors du changement d’ordinateur, c’est la liste que vous devrez copier
Je viens d'essayer de reproduire votre problème sur mon mac. J'ai donc installé XAMPP avec la version PHP 7.1.25 qui est la version équivalente de ma version locale PHP
J'ai donc installé le XAMPP et démarré le serveur.
Téléchargé le dossier de mon projet laravel sur mon serveur Ubuntu et le copié dans htdocs (XAMPP)
Quand j'ai essayé de lancer http: // localhost/myproject/public il montre l'exception comme
There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied
Puis j'ai donné une permission complète au dossier de stockage
chmod -R 777 storage
Et changé de propriétaire pour les fichiers dans le dossier myproject.
Ici, je viens de vérifier la propriété du répertoire tableau de bord qui fonctionne parfaitement et étant donné le même propriétaire du répertoire myproject.
chown -R root:admin .
Puis commandes suivantes
composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear
Après cela, mon code laravel fonctionne parfaitement.
Class view does not exist
est probablement un problème de propriété du répertoire
Pour moi (lors du développement sur xampp, ce que je fais pour tous mes projets), je ne recommanderais pas de placer vos données dans le dossier htdocs. Laravel s'attend à ne pas être hébergé sur un sous-chargeur, par exemple. (localhost/my-project). Vous devez donc configurer un hôte virtuel afin de le faire fonctionner facilement (par exemple, my-project.test), ce qui est un peu gênant.
La solution simple consiste à utiliser la commande php artisan serve
afin de configurer simplement un serveur local sur le port 8000.
N'oubliez pas de lancer xampp pour le serveur mysql.
Quelques conseils typiques ont déjà été mentionnés:
composer install
(installer composer si vous ne l'avez pas encore fait)composer dump-autoload
php artisan key:generate
php artisan migrate
php artisan cache:clear
Habituellement, vous n’avez pas besoin de définir d’autorisation de fichier
chmod -R 777 storage/
Si vous avez un utilisateur différent pour Apache2 (généralement www-data), faites aussi:
chown -R www-data storage/
Vous pouvez également vérifier s'il fonctionne avec le serveur intégré:
php artisan serve
Puisque votre Apache est déjà en service, vous n’avez que des problèmes d’autorisation. Et puisque vous utilisez Mac, le nom d'utilisateur et le groupe par défaut dans Apache conf sont _www
pour Mac et non www-data
pour Ubuntu. Vous pouvez le voir dans le fichier httpd.conf
:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</IfModule>
Maintenant, utilisez terminal, entrez dans votre répertoire de projet, disons cd /var/www/laravel-project1
et assurez-vous que le groupe _www
(ou l'utilisateur aussi, dans certains cas de votre environnement d'application App, a accès (en lecture et en écriture) à:
Tous les répertoires et sous-répertoires publics contenant des actifs, le cas échéant.
Sudo chgrp -R _www public
Sudo chmod -R 774 public
Répertoire de stockage et sous-répertoires spécifiés ici (storage/framework
-> tout, storage/logs
-> tous, storage/app
-> répertoire public
uniquement) et répertoire et fichiers bootstrap/cache
Sudo chgrp -R _www storage/framework storage/logs storage/app/public bootstrap/cache
Sudo chmod -R 774 storage/framework storage/logs storage/app/public bootstrap/cache
Cela devrait vous débarrasser de tous vos problèmes d'autorisations pour accéder aux pages.
MAIS maintenant, si lors de l'utilisation de la page, des sessions et des fichiers journaux créés, vous rencontrez d'autres problèmes, il se peut qu'un dernier problème d'autorisation, appelé UMask
, indique à Apache ou Web Server, comme Nginx, quelle autorisation attribuer au nouveau répertoire créé ou fichiers pour l'utilisateur _www
. Par défaut, Apache umask
est 0002
, ce qui donne 0775
pour le répertoire et 0664
pour le nouveau fichier. Si jamais la valeur umask
a été changée en 0022
comme s'il s'agissait de la valeur par défaut dans Nginx, les autorisations équivalentes 0755
ou 0644
ne seront pas suffisantes pour que votre groupe Apache _www
écrive dans les répertoires du groupe _www
. Vous pouvez donc changer umask
en 0002
ou changer le propriétaire en _www
:
Sudo chown -R _www public storage/framework storage/logs storage/app/public
Cela dépend donc de vos configurations.
Je suis tombé sur le même problème que vous, mais je ne passais pas d’ubuntu à mac, c’était de windows à linux. pour vous sauver dans le futur ... Voici les étapes à suivre.
git init --bare
.git clone
.Le répertoire que vous allez créer dans le Mac peut se trouver dans les htdocs du xammp .Je sais que cela peut être pénible, mais cela en vaut la peine.
Sources pour plus d’informations: git-scmObtenir Git sur un serveur
Si vous avez besoin de plus d'aide, je serai ravi d'en discuter avec vous.
Remarque: Les opérations suivantes fonctionnent pour Laravel 5.x mais également 4.2, non testées avec d'autres versions
Pourquoi ne pas utiliser Git? (Si vous ne le connaissez pas, consultez le site Web officiel , il existe également une multitude de didacticiels sur le Web)
Copier-coller des projets entiers n’est généralement pas une bonne idée, à cause de certaines autorisations de fichiers/répertoires et d’autres choses pas très bonnes.
C'est ce que j'ai fait pour déplacer mon projet de Windows vers mon serveur Ubuntu:
Fait une
composer dump-autoload
composer install
Pour migrer votre base de données, faites
php artisan migrate
et si vous avez semé, faites ceci
php artisan db:seed
Ensuite, si vous avez des problèmes avec les autorisations de fichiers/dossiers, ne JAMAIS faites un chmod -R 777 path/
; si vous devez le faire pour résoudre votre problème, vous faites quelque chose de mal . Cette commande accorde tous les privilèges à quiconque d'accéder à tous les fichiers et dossiers du dossier path
.
Dans votre cas, vous devez procéder comme suit:
Tout d’abord, trouvez quel nom d’utilisateur est utilisé par Apache pour exécuter le serveur (c’est généralement www-data)
ps aux | egrep '(Apache|httpd)'
Ensuite, changez le propriétaire du répertoire du projet en utilisateur Apache (exemple pour l'utilisateur Apache de www-data)
Sudo chown -R www-data:www-data /var/htdocs/your-project/
Définir les autorisations des dossiers
Sudo find /var/htdocs/your-project/ -type d -exec chmod 755 {} \;
Définir les autorisations de fichiers
Sudo find /var/htdocs/your-project/ -type f -exec chmod 644 {} \;
Pour résoudre le problème bootstrap/cache et storage/permission, procédez comme suit:
Sudo chown -R www-data:www-data /var/htdocs/your-project/
Laravel 5.x
Sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/bootstrap/cache
Laravel 4.2
Sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/app/bootstrap/cache
Alors, tu devrais être bon.
En procédant ainsi, vous pouvez facilement déplacer votre projet d’une machine à une autre sans avoir à vous soucier des correctifs d’autorisation ou quoi que ce soit.
Pour plus d’informations sur la source des autorisations de fichiers et de dossiers, reportez-vous à la section Configuration des autorisations et de la propriété des dossiers de fichiers de Laravel 5
Vous pouvez créer un fichier .htaccess et ajouter les données ci-dessous dans un fichier .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Après avoir créé le fichier .htaccess, définissez le chemin racine laravel dans le terminal et exécutez la commande ci-dessous dans le terminal
php artisan serve
Je pense que si vous avez copié le projet à partir d’Ubuntu, c’est un problème d’autorisations.
obtenir d’abord des utilisateurs sur votre ordinateur Mac en tapant ceci dans le terminal
users
puis copiez l'utilisateur que vous venez de recevoir par exemple (nom d'utilisateur) et utilisez-le dans cette commande
Sudo chown -R username project-directory
puis recherchez yourproject-directory/bootstrap/cache
s'il n'existe pas, allez le créer. sinon exécutez cette commande:
Sudo chmod -R guo+w project-directory/bootstrap/cache
puis
Sudo chmod -R guo+w project-directory/storage
puis effacez le chargement automatique du compositeur, ainsi que le cache et la configuration à l'aide de la commande artisan
composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear
maintenant, essayez d'exécuter le projet si le problème persiste. Vous devez vérifier config/app.php
s'il contient Illuminate\View\ViewServiceProvider::class
le fournisseur de services d'affichage.
si ce n'est pas là, alors ajoutez-le
Pour isoler vos problèmes:
composer install
php artisan serve
. De cette façon, vous excluez xampp en tant que problème.localhost:8000
Si vous avez déjà l'intégralité de votre base de code sur votre boîte locale (y compris le dossier du fournisseur), ignorez les étapes 1 et 2. L'étape 3 ne ferait pas de mal, mais vous pouvez probablement l'ignorer également.
Une fois que tout fonctionne, passez à xampp.
composer update
composer dumpautoload
php artisan cache:clear
Et puis il suffit de configurer un hôte virtuel
Editez le fichier hosts
et redirigez toutes les demandes de votre domaine vers 127.0.0.1
:
127.0.0.1 lara.vel
Éditez\xampp\Apache\conf\extra\httpd-vhosts.conf:
<VirtualHost lara.vel:80>
DocumentRoot "C:\xampp\htdocs\laravel\public"
ServerAdmin laravel.dev
<Directory "C:\xampp\htdocs\laravel">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Terminé! Ouvrez votre domaine dans votre navigateur, vous verrez votre projet là-bas!
L’autre façon est simple, il suffit de lancer artisan serve
.
Veuillez voter si vous avez trouvé cette réponse utile.
lorsque l'utilisateur/le groupe www-data
est inconnu; la plupart des distributions Linux utilisent Apache
:
chown -R Apache:apache dirname
alors que sur OSX
, ce serait utilisateur/groupe _www
:
chown -R _www:_www dirname
l'ajout de l'utilisateur actuel au groupe _www
pourrait vous faciliter la vie, en général.
Allez dans le dossier de votre projet, ajoutez ces commandes depuis le terminal
Sudo chmod -R 777 votre_projet/stockage
Sudo chmod -R 777 votre_projet/bootstrap/cache
Sudo chown -R: www-data votre_projet
Sudo chmod -R g + s votre_projet
puis php artisan key:generate
et composer install