it-swarm.com.de

Wie installiere ich Laravel 4 in einem Webhost-Unterordner, ohne / app / folder öffentlich verfügbar zu machen?

Ich habe mich gefragt, ob jemand von Ihnen eine Möglichkeit kennt, Laravel 4 in einem Webhost - UNTERVERZEICHNIS/Unterordner zu installieren, ohne den Ordner/app/und andere sinnvolle Dateien dem öffentlich zugänglichen Teil des zu öffnen Wirt.

Die Idee ist, dass ich auf http://mydomain.com/mylaravel/ zugreifen kann, um Laravel verwenden zu können, aber gleichzeitig möchte ich vermeiden, dass jemand etwas wie "go" tut http://mydomain.com/app/ oder http://mydomain.com/mylaravel/app/ und grundsätzlich in der Lage zu sein, meine Konfigurationsdateien und anderen Code zu sehen.

60

Also habe ich herausgefunden, wie das geht. Ich werde mit einem Beispiel erklären.

Angenommen, Sie haben eine Domain http://domain.com . Hier ist ein Beispiel für die Struktur, die Sie möglicherweise verwenden:

domain.com/    (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/    (where your html files and such go)
|   |-- [some other folders...]
|   |-- yourlaravel4/

/public_html/ Ist das Stammverzeichnis des öffentlich zugänglichen Teils Ihrer Webhosting-Dateien. Sie möchten einen Unterordner in /public_html/ Erstellen (in diesem Fall /public_html/yourlaravel4/). In diesem Unterordner speichern Sie den gesamten Inhalt des Laravel 4 public/ - Ordners.

Nun zu den restlichen Dateien. Sie müssen zum Stammverzeichnis Ihrer Webhosting-Dateien gehen, das heißt, Sie möchten sich auf domain.com/ - Ebene befinden, um public_html/ Und einige andere Ordner sehen zu können. Dann müssen wir hier einen Ordner erstellen, in dem die Basisdateien von Laravel 4 gespeichert werden. In diesem Fall ist es domain.com/yourlaravel4_base/. Innerhalb von yourlaravel4_base/ Müssen wir Speichern Sie alle Dateien und Ordner, die im Basisverzeichnis Laravel 4) vorhanden sind. Das wären app/, bootstrap/, vendor/, server.php Usw. Alles außer dem Ordner /public/, Dessen Inhalt Sie bereits in public_html/yourlaravel4/ Gespeichert haben.

Schließlich müssen wir 2 Dateien bearbeiten: Laravels /bootstrap/paths.php Und /public/index.php.


Ersetzen Sie in der Datei paths.php:

'app' => __DIR__.'/../app',

mit:

'app' => __DIR__.'/../../yourlaravel4_base/app',

Ersetzen Sie in der Datei paths.php:

'public' => __DIR__.'/../public',

mit:

'public' => __DIR__,

Ersetzen Sie in der Datei paths.php:

'base' => __DIR__.'/..',

mit:

'base' => __DIR__.'/../../yourlaravel4_base',

Ersetzen Sie in paths.php:

'storage' => __DIR__.'/../app/storage',

mit:

'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',

Ersetzen Sie in index.php:

require __DIR__.'/../bootstrap/autoload.php';

mit:

require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';

Ersetzen Sie in index.php:

$app = require_once __DIR__.'/../bootstrap/start.php';

mit:

$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';

Änderungen hochladen. Jetzt sollten Sie in der Lage sein, Laravel 4 in einem Unterordner Ihrer Website zu installieren, ohne den Ordner app/ Und andere vertrauliche Dateien verfügbar zu machen. :)

64

Sie können einen Alias ​​verwenden: no hankey-pankey mit weit verbreiteten Verzeichnissen auf Ihrem System.

Geben Sie in Ihrer httpd.conf oder Ihrem Admin-Panel Folgendes an:

/mylaravel/ /path/to/laravel/public

Geben Sie außerdem die URL in der app.php Ihres Laravel an

Linie 29

'url' => 'http://yourdomain.com/mylaravel/',

Legen Sie schließlich die RewriteBase in Ihrem /public/.htaccess fest

RewriteBase /mylaravel/

Funktioniert wie ein Zauber und hält Ihre Verzeichnisstruktur sauber und auf den Punkt!

28
Tom

Leute Leute! Keine Notwendigkeit, Dinge zu komplizieren!

(Für andere öffentliche Ordner, wie htdocs oder www, ersetzen Sie im Folgenden einfach public_html Durch Ihren.)

  1. Legen Sie alle Ihre Laravel Zeug in den Ordner der obersten Ebene (so dass der Ordner app neben dem Ordner public_html Ist)
  2. Verschieben Sie alle Dateien von public nach public_html (Achten Sie darauf, auch versteckte Dateien wie .htaccess Zu verschieben!)
  3. Löschen Sie den jetzt leeren Ordner public
  4. In bootstrap/path.php Ändern

    'public' => __DIR__.'/../public', Bis

    'public' => __DIR__.'/../public_html',

  5. Getan.
7
sisou

die Antwort von Emmanuel funktioniert nicht für mich, aber ich habe einige Änderungen vorgenommen, damit es funktioniert. obwohl ich mein Netzwurzel benutzte, um die Quelle eines Projektes zu sein. da ist es ; Ich habe Htdocs-Ordner als Stammordner, aber Sie haben möglicherweise andere, wie public_html, www oder so weiter. Sie können meine htdocs leicht durch die ersetzen, die Sie haben.

gut.

mein Verzeichnis

 root/
 htdocs 
 .htaccess 
 .override

zuerst löste ich alle laravel Abhängigkeiten von meinem localhost auf Windows mit composer. Danach packte ich das gesamte Paket in laravel4.Zip. in meine htdocs i erstelle einen Ordner laravel und ich habe die Zip-Datei hochgeladen und entpackt.

htdocs /
 laravel /
 app 
 bootstrap 
 public 
 vendors 
 ...

nachdem ich die Datei entpackt habe, verschiebe ich alles im öffentlichen Ordner in den htdocs-Ordner

htdocs /
 laravel 
 packages 
 .htaccess 
 favicon.ico 
 index.php 
 robots.txt

jetzt müssen wir einige Pfade in htdocs/index.php und htdocs/laravel/bootstrap/paths.php umschreiben

aber lass uns htdocs/laravel/bootstrap/paths.php öffnen. du würdest sehen

'app' => __DIR __. '/ ../app',

was heißt das . es bedeutet, dass wir bei htdocs/laravel/bootstrap/path stehen. und da für müssen wir diesen Ordner verlassen, um laravel Ordner dann für App-Ordner. ok. Dies ist die Struktur des laravel für Routing. wenn Sie bekommen Mit diesem Recht können Sie laravel ausführen.

finden

'public' => __DIR __. '/ ../public',

und ändere es auf

'public' => __DIR __. '/ ../../htdocs',

(simple ha) Mit einem (../) davon können wir einen Ordner aufsteigen. Jetzt befinden wir uns im Ordner laravel), aber wir müssen uns in htdocs befinden. Deshalb müssen wir ein weiteres (../) schreiben, um dorthin zu gelangen.

öffne htdocs/index.php und finde

erfordern __DIR __. '/ ../bootstrap/autoload.php';

ändere es in

erfordern 'laravel/bootstrap/autoload.php'; 

require ist eine eingebaute PHP-Funktion, daher werden wir sie als eine einfache PHP-Funktion behandeln. Wir brauchen nicht unbedingt laravel style um die autoload.php-Datei abzurufen. Also einfach entfernen und klassischen Stil wählen

finden

$ app = require_once __DIR __. '/ ../bootstrap/start.php';

ändere es in

$ app = require_once 'laravel/bootstrap/start.php';
3
Hassan Gilak

Wenn Sie versuchen, Laravel 5.1 in einem gemeinsam genutzten Hosting-Bereich auszuführen und alle obigen Antworten ein wenig anders zu sein als die tatsächlichen Laravel Dateien/Ordner oder Sie suchen, wie Sie Ihr laravel 5/5.1 in ein Unterverzeichnis auf Ihrem gemeinsam genutzten Hosting-Bereich legen, damit Sie folgendermaßen darauf zugreifen können:

http://mywebsite.com/mylaravel/

Diese Antwort ist also für Sie, stellen Sie zunächst sicher, dass Sie sich treffen

Laravel 5.1-Anforderungen:

- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL

hier ein paar einfache Tutorials für Sie:

Link 1

Link 2

Wenn Sie einfach Laravel Project auf Shared Hosting einrichten möchten und über cPanel-Zugriff verfügen, können Sie die folgenden Schritte ausführen, die ich befolgt habe, und es hat gut funktioniert.

Schritt 1: Erstellen Sie eine Zip- oder Tar-Datei Ihrer gesamten Laravel Anwendung auf Ihrem lokalen Computer.

Schritt 2: Gehen Sie zu Cpanel. Laden Sie die Zip/tar-Datei in das Verzeichnis public_html hoch und extrahieren Sie sie anschließend. (Sie können auch einen separaten Ordner für Ihre laravel Anwendung erstellen. Da ich mehrere Laravel Anwendungen hochladen möchte, habe ich für jede Anwendung ein separates Verzeichnis erstellt (siehe Abbildung) im unteren Bild.)

enter image description here

Schritt 3: Gehen Sie nun zu 'Addon Domain' und ändern Sie das Dokumentenstammverzeichnis Ihrer angegebenen Domain. Verweisen Sie die Domäne auf Öffentliche Ordner.

enter image description here

Überprüfen Sie nun Ihre Domain, die in die Datei public/index.php umgeleitet wird. Es müssen keine Pfade geändert werden.

1
Sumit Patil

wenn Sie den Addondomain- oder Subdomain-Assistenten in Ihrem Panel verwenden, sollten Sie vom Assistenten nach dem Dokumentstamm gefragt werden. Zum Beispiel möchte ich droidman.com hinzufügen. Der Assistent sollte mir vorschlagen, den Ordner droidman.com zu erstellen. In diesem Schritt weisen Sie den Assistenten an, den Ordner "droidman.com/public" zu erstellen. Dann legen Sie Ihre Anwendung in droidman.com Ordner. Ihr Gastgeber wird sich den öffentlichen Ordner ansehen;). Problem gelöst

1
Hassan Gilak

Wenn Sie einen Apache-Server verwenden, ist der einfachste Weg, dies zu tun, indem Sie Ihre Laravel Anwendung außerhalb des WWW-Stammverzeichnisses (oder in einem geschützten Ordner im WWW-Stammverzeichnis) speichern und dann den gewünschten Link setzen Unterordner, um auf den öffentlichen Ordner in Laravel zu verweisen

Zum Beispiel platziere ich meine laravel Installationen in:

/usr/local/share/myLaravel

Erstellen Sie dann in Ihrem öffentlichen WWW-Ordner einen Symlink wie folgt:

ln -s /usr/local/share/myLaravel/public mylaravel

Sie müssen einige Anpassungen an Ihrer Installation vornehmen, z. B. Ihre Rewrite Base nach/mylaravel/verschieben und sicherstellen, dass Ihre Konfigurationsdateien Überschreibungen im Basisverzeichnis zulassen. Dies ist jedoch einfacher, als alles zu ändern.

0
Troy