it-swarm.com.de

Laravel Projekt von Ubuntu Server auf Local XAMPP verschieben

Ich habe ein Laravel -Projekt, das ich von meinem Ubuntu-Server kopiert habe, und jetzt versuche ich, es auf meinem lokalen Computer (XAMPP auf Mac) auszuführen. Ich habe seit ein paar Tagen damit zu kämpfen, und ich habe das Gefühl, dass ich gehe wahnsinnig.

Wenn ich mein Projekt in den Ordner XAMPP htdocs einfügen, erhalte ich diese Fehlermeldung:

Ansicht [Willkommen] nicht gefunden

Welcher php artisan cache:clear das verschwinden lässt, erhalte ich diesen Fehler:

Das Bootstrap/Cache-Verzeichnis muss vorhanden und beschreibbar sein

Dann mache ich das, php artisan cache:clear, was mir einen neuen Fehler gibt:

Klassenansicht ist nicht vorhanden

Dann, egal was ich im Terminal mache oder den Webbrowser anschaue, bekomme ich immer den Fehler 

Klassenansicht ist nicht vorhanden

Dann habe ich composer update noch den gleichen Fehler ausprobiert ..... was mache ich falsch?

Das war ein Albtraum.

6
user979331

Letztes Mal habe ich überprüft, dass Laravel nicht auf XAMPP ausgeführt wird, sondern auf der PHP, die bei der Installation von XAMPP installiert wurde, damit das Projekt an einem beliebigen Ort auf dem Computer gespeichert werden kann.

Da dies die Tatsache ist, müssen Sie nur eine aktive PHP -Installation haben und dann nur die relevanten Dateien des Projekts auf den neuen Computer kopieren (solche Dateien, die Sie erhalten, wenn Sie Ihr Projekt auf GitHub verschieben). . Es kommt nicht mit Cache-Problemen, dann müssen Sie danach nur noch etwas tun 

php artisan key:generate

dann composer install oder composer update, um die Lieferantenpakete online abzurufen

Mein Geld ist jetzt, wenn Sie die relevanten Dateien auswählen und mit ihnen neu installieren Gemäß meiner eigenen Installation beim Wechseln des Computers ist dies die Liste, die Sie kopieren müssen  enter image description here

2
Flash

Ich habe gerade versucht, Ihr Problem auf meinem Mac zu reproduzieren. Also habe ich XAMPP mit der PHP Version 7.1.25 installiert, die die äquivalente Version meiner lokalen PHP Version ist

Also habe ich den XAMPP installiert und den Server gestartet. 

Mein Laravel-Projektordner wurde von meinem Ubuntu-Server heruntergeladen und in htdocs (XAMPP) kopiert.

Wenn ich versucht habe, http: // localhost/myproject/public auszuführen, wird die Ausnahme angezeigt

There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied

Dann habe ich dem Speicherordner volle Erlaubnis erteilt

chmod -R 777 storage

Und der Besitzer der Dateien in meinem Projektordner wurde geändert. 

Hier habe ich gerade den Besitz des dashboard -Verzeichnisses überprüft, das perfekt ausgeführt wird, und das same user-Eigentum des myproject-Verzeichnisses gegeben.

chown -R root:admin .  

Dann folgende Befehle 

composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear

Danach läuft mein Laravel-Code einwandfrei.

Class view does not exist

ist wahrscheinlich eine Eigentumsfrage des Verzeichnisses

4
Naveen

Für mich (bei der Entwicklung von xampp - was ich für alle meine Projekte mache) - würde ich nicht empfehlen, Ihre Sachen in den Ordner htdocs zu legen. Laravel erwartet, dass sie nicht auf einem Subfodler gehostet wird, z. (localhost/mein-projekt). Sie sollten also einen virtuellen Host einrichten, damit er problemlos funktioniert (z. B. my-project.test). Dies ist etwas ärgerlich. 

Eine einfache Lösung verwendet den Befehl php artisan serve, um einfach einen lokalen Server an Port 8000 einzurichten.

Vergessen Sie nicht, xampp für den MySQL-Server zu starten.

Einige typische Tipps wurden bereits erwähnt:

  • herstellerordner löschen und composer install ausführen (wenn nicht, installieren Sie Composer)
  • composer dump-autoload ausführen
  • php artisan key:generate ausführen
  • natürlich die Migration nicht vergessen php artisan migrate
  • und leeren Sie den gesamten Cache php artisan cache:clear

Normalerweise müssen Sie keine Dateiberechtigungen für afaik festlegen

2
Frank Provost

chmod -R 777 storage/

Wenn Sie einen anderen Benutzer für Apache2 haben (normalerweise www-data), machen Sie auch Folgendes:

chown -R www-data storage/

Sie können auch überprüfen, ob der integrierte Server ausgeführt wird:

php artisan serve

1
eselskas

Da Ihr Apache bereits arbeitet, haben Sie nur Berechtigungsprobleme. Und da Sie einen Mac verwenden, ist der Standardbenutzername und die Standardgruppe in Apache conf _www für Mac und nicht www-data für Ubuntu. Sie können es in der httpd.conf-Datei sehen:

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

Verwenden Sie nun das Terminal, rufen Sie in Ihr Projektverzeichnis, sagen wir cd /var/www/laravel-project1, und stellen Sie sicher, dass die Gruppe _www (oder der Benutzer auch in einem Fall Ihrer App-Umgebungslogik 'Zugriff (Lesen und Schreiben) hat, um:

Alle öffentlichen Verzeichnisse und Unterverzeichnisse, die Assets enthalten, falls vorhanden.

Sudo chgrp -R _www public
Sudo chmod -R 774 public

Speicherverzeichnis und hier angegebene Unterverzeichnisse (storage/framework -> all, storage/logs -> all, storage/app -> public nur Verzeichnis) sowie Bootstrap/cache-Verzeichnis und -Dateien

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

Dadurch sollten alle Berechtigungen für den Zugriff auf Seiten entfernt werden.

ABER jetzt, wenn bei der Verwendung der erstellten Seite, Sitzungen und Protokolldateien andere Probleme auftreten, kann es sich um ein letztes Problem der Berechtigung handeln, das als UMask bezeichnet wird und Apache oder Webserver wie Nginx mitteilt, welche Berechtigung einem neu erstellten Verzeichnis oder zuzuweisen ist Dateien für den Benutzer _www. Standardmäßig ist Apache umask0002, die 0775 für das Verzeichnis und 0664 für die neue Datei angibt. Wenn der umask-Wert in 0022 geändert wurde (wie in Nginx standardmäßig), reichen die entsprechenden Berechtigungen 0755 oder 0644 nicht aus, damit Ihre Apache-Gruppe _www in die Verzeichnisse mit der Gruppe _www schreiben kann. Sie können also entweder umask in 0002 oder den Besitzer in _www ändern:

Sudo chown -R _www public storage/framework storage/logs storage/app/public

Das hängt also von deinen Configs ab.

1
KeitelDOG

Ich hatte das gleiche Problem wie Sie, aber ich bewegte mich nicht von Ubuntu zu Mac, sondern von Windows zu Linux. Ich war total durcheinander, aber nur Git hat mich gerettet, es könnte Ihnen ein bisschen Schmerzen bereiten, aber es geht um Sie in Zukunft zu retten ... Hier sind die Schritte, die Sie tun müssen.

  1. Erstellen Sie mit dem Befehl git init --bare ein leeres Repository auf dem Mac.
  2. Klonen Sie das Repository mit git clone auf das Ubuntu.
  3. Kopieren Sie Ihren Laravel-Code in den Klon, den Sie in Schritt 2 erstellt haben.
  4. Schieben Sie die Dateien vom Ubuntu auf den MAC.
  5. Testen Sie das Projekt.

Das Verzeichnis, das Sie im Mac erstellen, kann sich in den htdocs von xammp befinden. Ich weiß, dass dies eine schmerzhafte Aufgabe sein kann, aber es lohnt sich.

Quellen für weitere Informationen: git-scmGit auf dem Server abrufen

Wenn Sie mehr Hilfe benötigen, bespreche ich Sie gerne.

1
Ray A

Hinweis: Folgendes funktioniert für Laravel 5.x, aber auch 4.2, nicht getestet mit anderen Versionen

Warum nicht mit Git? (Wenn Sie nicht damit vertraut sind, werfen Sie einen Blick auf die offizielle Website , es gibt auch jede Menge Tutorials im Web)

Normalerweise ist das Kopieren von gesamten Projekten aufgrund einiger Datei-/Verzeichnisberechtigungen und anderer nicht so guter Dinge keine gute Idee.

So habe ich mein Projekt von Windows auf meinen Ubuntu-Server verschoben:

  • Platzieren Sie Ihr Projekt in einem Git-Repository (GitHub, GitLab oder was auch immer). Die .gitignore-Dateien, die mit den Apps Laravel bereitgestellt werden, sind in den meisten Fällen ausreichend
  • Klonen Sie auf Ihrem neuen Computer Ihr Repository
  • Mach einen

    composer dump-autoload
    composer install
    
  • Um Ihre Datenbank zu migrieren, tun Sie dies

    php artisan migrate
    

    und wenn du gesät hast, mach das

    php artisan db:seed
    

Wenn Sie Probleme mit den Datei-/Ordnerberechtigungen haben, führen Sie nicht EVER einen chmod -R 777 path/ aus. Wenn Sie dies tun müssen, um Ihr Problem zu lösen, machen Sie einen Fehler. Dieser Befehl erteilt alle Berechtigungen an alle Dateien und Ordner im Ordner path.

In Ihrem Fall müssen Sie Folgendes tun:

  • Ermitteln Sie zunächst, welchen Benutzernamen Apache zum Ausführen des Servers verwendet (in der Regel handelt es sich dabei um www-data).

    ps aux | egrep '(Apache|httpd)'
    
  • Ändern Sie dann den Besitzer des Projektverzeichnisses in den Benutzer von Apache (Beispiel für den Apache-Benutzer "www-data").

    Sudo chown -R www-data:www-data /var/htdocs/your-project/
    
  • Legen Sie die Ordnerberechtigungen fest

    Sudo find /var/htdocs/your-project/ -type d -exec chmod 755 {} \;
    
  • Legen Sie die Dateiberechtigungen fest

    Sudo find /var/htdocs/your-project/ -type f -exec chmod 644 {} \;
    
  • Um das Problem mit Bootstrap/Cache und Speicher/Berechtigungen zu beheben, führen Sie folgende Schritte aus

    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

Dann solltest du gut sein.

Auf diese Weise können Sie Ihr Projekt problemlos von einem Computer auf einen anderen verschieben, ohne Probleme mit den Korrekturen für die Berechtigung oder irgendetwas zu haben.

Weitere Informationen und Quelle für Befehlszeilenanweisungen für Dateien und Ordnerberechtigungen finden Sie unter Laravel. 5 Dateien Ordner Berechtigungs- und Besitz-Setup

1
Amaury

Sie können eine .htaccess-Datei erstellen und die folgenden Daten in die .htaccess-Datei einfügen

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !^public
 RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Legen Sie nach dem Erstellen der .htaccess-Datei den Laravel-Stammpfad im Terminal fest und führen Sie den Befehl unter dem Befehl im Terminal aus

php artisan serve
1
Jinesh Gandhi

Ich denke, wenn Sie das Projekt von Ubuntu kopiert haben, ist dies ein Berechtigungsproblem.

holen Sie sich zunächst Benutzer auf Ihrem Mac-Computer, indem Sie diese in Terminal eingeben

users

kopieren Sie dann den gerade erhaltenen Benutzer (Benutzername) und verwenden Sie ihn in diesem Befehl

Sudo chown -R username project-directory

Überprüfen Sie dann auf yourproject-directory/bootstrap/cache, falls es nicht existiert, und erstellen Sie es. sonst diesen Befehl ausführen:

Sudo chmod -R guo+w project-directory/bootstrap/cache

dann 

Sudo chmod -R guo+w project-directory/storage

löschen Sie anschließend den Autoload und Cache und die Konfiguration von composer mit einem handwerklichen Befehl

composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear

versuchen Sie nun, das Projekt auszuführen, falls das Problem weiterhin besteht. Sie müssen config/app.php überprüfen, ob es Illuminate\View\ViewServiceProvider::class

wenn es nicht vorhanden ist, fügen Sie es hinzu

0

So isolieren Sie Ihre Probleme:

  1. Holen Sie sich Ihren Code in ein Repository (Bitbucket oder Github)
  2. Klonen Sie das Repository in Ihre lokale Umgebung
  3. composer install ausführen
  4. Führen Sie php artisan serve aus. Auf diese Weise schließen Sie xampp als Problem aus.
  5. In Ihrem Browser gehen Sie zu localhost:8000

Wenn Sie bereits die gesamte Codebase in Ihrer lokalen Box (einschließlich des Herstellerordners) haben, überspringen Sie die Schritte 1 und 2. Schritt 3 würde nicht schaden, aber Sie können dies wahrscheinlich auch überspringen.

Wenn alles funktioniert, wechseln Sie zu xampp.

0
adam

Zuerst:

composer update
composer dumpautoload
php artisan cache:clear

Und konfigurieren Sie dann einfach einen virtuellen Host

1. Erstellen Sie eine lokale Domäne für Ihre App

Bearbeiten Sie die hosts-Datei und leiten Sie alle Anfragen von Ihrer Domain an 127.0.0.1 um:

127.0.0.1   lara.vel

2. Konfigurieren Sie einen virtuellen Host

Bearbeiten Sie\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>

Erledigt! Öffnen Sie Ihre Domain in Ihrem Browser. Dort sehen Sie Ihr Projekt!


Der andere Weg ist einfach: Führen Sie einfach artisan serve aus.

Bitte stimmen Sie ab, wenn Sie diese Antwort für nützlich gehalten haben.

0
X4748

wenn Benutzer/Gruppe www-data unbekannt ist; Die meisten Linux-Distributionen verwenden Apache:

chown -R Apache:apache dirname

in OSX wäre dies Benutzer/Gruppe _www:

chown -R _www:_www dirname

das Hinzufügen des aktuellen Benutzers zur Gruppe _www macht das Leben im Allgemeinen einfacher.

0
Martin Zeitler

Gehe zu deinem Projektordner und führe diese Befehle vom Terminal aus

Sudo chmod -R 777 Ihr_Projekt/Speicher

Sudo chmod -R 777 Ihr_Projekt/Bootstrap/Cache

Sudo chown -R: www-data dein_projekt

Sudo chmod -R g + s dein_projekt

dannphp artisan key:generateundcomposer install

0
Dhaval