web-dev-qa-db-fra.com

Laravel déplace le projet d'Ubuntu Server vers le XAMPP local

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.

6
user979331

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  enter image description here

2
Flash

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

4
Naveen

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:

  • supprimer le dossier du fournisseur et exécuter composer install (installer composer si vous ne l'avez pas encore fait)
  • exécuter composer dump-autoload
  • exécuter php artisan key:generate
  • ofcourse n'oubliez pas la migration php artisan migrate
  • et effacez votre cache complet php artisan cache:clear

Habituellement, vous n’avez pas besoin de définir d’autorisation de fichier

2
Frank Provost

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

1
eselskas

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.

1
KeitelDOG

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.

  1. Créez un référentiel vide sur le Mac en utilisant cette commande git init --bare.
  2. Clonez le référentiel sur l'ubuntu à l'aide de git clone.
  3. Copiez votre code laravel sur le clone que vous avez créé à l’étape 2.
  4. Poussez les fichiers de l'ubuntu vers le MAC.
  5. Testez le projet.

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.

1
Ray A

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:

  • Placez votre projet sur un référentiel git (GitHub, GitLab ou autre), les fichiers .gitignore fournis avec les applications Laravel sont, dans la plupart des cas, assez bons
  • Sur votre nouvelle machine, clonez votre référentiel
  • 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

1
Amaury

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
1
Jinesh Gandhi

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

0
Hassan Ali Salem

Pour isoler vos problèmes:

  1. Obtenez votre code dans un référentiel (bitbucket ou github)
  2. Cloner le référentiel dans votre environnement local
  3. Exécuter composer install
  4. Exécutez php artisan serve. De cette façon, vous excluez xampp en tant que problème.
  5. Dans votre navigateur, accédez à 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.

0
adam

Tout d'abord:

composer update
composer dumpautoload
php artisan cache:clear

Et puis il suffit de configurer un hôte virtuel

1. Créez un domaine local pour votre application

Editez le fichier hosts et redirigez toutes les demandes de votre domaine vers 127.0.0.1:

127.0.0.1   lara.vel

2. Configurer un hôte virtuel

É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.

0
X4748

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.

0
Martin Zeitler

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

0
Dhaval