Jak zainstalować Laravel 4 na podfolderze web host bez publicznego ujawniania/ app / folder?

Zastanawiałem się, czy ktoś z was wie, jak zainstalować Laravel 4 w podkatalogu / podfolderze hosta, nie narażając folderu /app/ i innych sensownych plików na publicznie dostępną część hosta.

Chodzi o to, że będę w stanie uzyskać dostęp http://mydomain.com/mylaravel / Aby móc korzystać z Laravel, ale jednocześnie chcę uniknąć kogoś, kto robi coś takiego, jak pójście do http://mydomain.com/app/ lub http://mydomain.com/mylaravel/app / i zasadniczo jest w stanie zobaczyć moje pliki konfiguracyjne i inny kod.

Author: Antonio Carlos Ribeiro, 2013-05-22

9 answers

Więc wymyśliłem, jak to zrobić. Wyjaśnię na przykładzie.

Załóżmy, że masz domenę, http://domain.com. oto przykład struktury, której możesz użyć:

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/ jest korzeniem publicznie dostępnej części plików hostingowych. Chcesz utworzyć podfolder w /public_html/ (w tym przypadku /public_html/yourlaravel4/). W tym podfolderze będziesz przechowywać całą zawartość folderu Laravel 4 public/.

Teraz, dla reszty plików. Ty musisz przejść do katalogu głównego swoich plików hostingowych, czyli chcesz być na poziomie domain.com/, dzięki czemu możesz zobaczyć public_html/ i kilka innych folderów. Następnie musimy utworzyć tutaj folder, w którym będą przechowywane pliki podstawowe Laravel 4. W tym przypadku to domain.com/yourlaravel4_base/. Wewnątrz yourlaravel4_base/ musimy przechowywać każdy plik i folder, który istnieje w katalogu base Laravel 4. To byłoby app/, bootstrap/, vendor/, server.php, itd. Wszystko oprócz folderu /public/, którego zawartość zapisałeś już w public_html/yourlaravel4/.

Na koniec musimy edytować 2 pliki: /bootstrap/paths.php i /public/index.php.


W pliku paths.php zastąp:

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

Z:

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

W pliku paths.php zastąp:

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

Z:

'public' => __DIR__,

W pliku paths.php zastąp:

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

Z:

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

W paths.php, zastąp:

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

Z:

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

W index.php, zastąp:

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

Z:

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

W index.php, zastąp:

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

Z:

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

Zmiany w przesyłaniu. Teraz powinieneś mieć możliwość zainstalowania Laravel 4 w podfolderze w swojej witrynie bez ujawniania folderu app/ i innych poufnych plików. :)

 63
Author: Emmanuel Figuerola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-16 07:48:56

Możesz użyć aliasu: no hankey-pankey z rozpowszechnionymi katalogami w Twoim systemie.

Określ w swoim httpd.conf lub admin-panel:

/mylaravel/ /path/to/laravel/public

Ponadto określ adres URL w aplikacji Laravel.php

Linia 29

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

Ostatecznie ustawić bazę RewriteBase w /public/.htaccess

RewriteBase /mylaravel/

Działa jak urok i utrzymuje strukturę katalogów w czystości i do rzeczy!

 28
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-23 15:32:26

Ludzie, Ludzie! Nie musisz zbytnio komplikować rzeczy!

(W przypadku innych folderów publicznych, takich jak htdocs lub www po prostu zastąp public_html w poniższym miejscu swoim.)

  1. Umieść wszystkie swoje rzeczy Laravel w folderze najwyższego poziomu (tak, aby folder app był obok folderu public_html)
  2. Przenieś wszystkie pliki z public do public_html (pamiętaj, aby przenosić również ukryte pliki, takie jak .htaccess!)
  3. Usuń teraz pusty public folder
  4. W bootstrap/path.php Zmień

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

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

  5. Zrobione.
 7
Author: sisou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-08 02:14:46

Emmanuel answer Nie działa dla mnie, ale zrobiłem kilka zmian, aby to działało . chociaż użyłem mojego korzenia internetowego jako źródła projektu . jest. ; mam folder htdocs jako folder główny, ale możesz mieć inne, takie jak public_html, www itp . możesz łatwo zastąpić mój htdocs tym, który masz .

Dobrze .

Mój dircetory

root/ 
      htdocs
      .htaccess
      .override

Najpierw rozwiązałem wszystkie zależności laravel od mojego localhost w windows za pomocą composera . po tym spakowałem cała paczka do laravel4.zip . w moim htdocs utworzyłem folder laravel i wgrałem i rozpakowałem w nim plik zip.

htdocs/
        laravel/
                 app
                 bootstrap
                 public 
                 vendors
                 ...

Więc po rozpakowaniu pliku przenoszę wszystko w folderze publicznym do folderu htdocs

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

Teraz musimy przepisać kilka ścieżek w htdocs / index.php i htdocs/laravel/bootstrap / paths.php

Ale pozwala otworzyć htdocs / laravel / Bootstrap / paths.php . zobaczysz

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

Co to znaczy . oznacza to, że stoimy na htdocs / laravel/ bootstrap / path . i tam musimy wyjść z tego folderu do folderu laravel, a następnie przejść do folderu aplikacji . ok . jest to struktura laravel do routingu . jeśli dobrze to rozegrasz, możesz sprawić, że Twój laravel ucieknie .

Znajdź

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

I zmień go na

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

(proste ha) z jednym (../ ) z nich możemy przejść do jednego folderu . więc teraz jesteśmy w folderze laravel . ale musimy być w htdocs . więc musimy napisać inny (../ ) aby się tam dostać .

Otwórz htdocs / indeks.php i find

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

Zmień na

require 'laravel/bootstrap/autoload.php'; 

Require jest wbudowaną funkcją php, więc potraktujemy ją jako prosty php . nie potrzebujemy stylu laravel do pobierania autoload.plik php . więc po prostu usuń go i przejdź do stylu klasycznego

Znajdź

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

Zmień na

$app = require_once 'laravel/bootstrap/start.php';
 3
Author: HMG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-22 14:36:16

Jeśli próbujesz uruchomić Laravel 5.1 do współdzielonej przestrzeni hostingowej i wszystkie powyższe odpowiedzi wydają się nieco różnić od rzeczywistych plików/folderów Laravel lub szukasz sposobu umieszczenia Laravel 5 / 5.1 w podkatalogu na współdzielonej przestrzeni hostingowej, dzięki czemu możesz uzyskać do niego dostęp w następujący sposób:

http://mywebsite.com/mylaravel/

Więc ta odpowiedź jest dla ciebie, przede wszystkim upewnij się, że spotkasz

Wymagania Laravel 5.1:

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

Oto dwa proste tutoriale dla Ciebie:

Link 1

Link 2

 2
Author: Mohamed Salem Lamiri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 09:45:56

Jeśli używasz Kreatora addondomain lub subdomaind w panelu ,kreator powinien poprosić Cię o root dokumentu . na przykład chcę dodać droidman.com , czarodziej powinien zasugerować mi zrobienie droidman.com folder . w tym kroku powiedz kreatorowi, aby droidman.com/public folder . następnie złóż wniosek w droidman.com folder . Twój host zajrzy do folderu publicznego;). problem rozwiązany

 1
Author: HMG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-10 20:16:46

Jeśli chcesz po prostu skonfigurować projekt Laravel na współdzielonym hostingu i masz dostęp do cPanel, możesz wykonać następujące kroki, które wykonałem i działało dobrze.

Krok 1: Utwórz plik zip lub tar całej aplikacji Laravel na lokalnym komputerze.

Krok 2: Przejdź do Cpanel. Prześlij plik zip / tar do katalogu public_html, a następnie rozpakuj go. (Możesz również utworzyć osobny folder dla swojej aplikacji laravel. Ponieważ chcę wgrać więcej niż jedną aplikację Laravel I utworzyli osobny katalog dla każdego z nich, jak pokazano na poniższym obrazku.)

Tutaj wpisz opis obrazka

Krok 3: Teraz przejdź do "domeny Addon" i zmień główny dokument określonej domeny. Wskaż domenę do folderu publicznego.

Tutaj wpisz opis obrazka

Teraz sprawdź swoją domenę, która przekieruje do public/index.plik php. Nie ma potrzeby zmieniać żadnych ścieżek.

 1
Author: Sumit Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-08 13:26:59

Jeśli używasz serwera apache, najprostszym sposobem na to jest, aby host Przechowywać aplikację Laravel poza głównym www (lub w chronionym folderze w głównym www), a następnie połączyć symbolicznie pożądany podfolder, aby skierować go do folderu publicznego w laravel

Na przykład umieszczam swoje instalacje laravel w:

/usr/local/share/myLaravel

Następnie, w publicznym folderze www, Utwórz dowiązanie symboliczne w następujący sposób:

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

Będziesz musiał dokonać pewnych poprawek w swojej instalacji, na przykład umieścić bazę przepisywania na / mylaravel / i upewnij się, że pliki konfiguracyjne zezwalają na nadpisywanie w lokalizacji podstawowej, ale jest to prostsze niż modyfikowanie wszystkiego.

 0
Author: Troy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-30 15:11:19

Sprawdź swoje uprawnienia. Przechodziłem przez następujące, choć nie polecam.

Użyłem SSH i zrobiłem coś takiego:

rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING

ln -s project_folder/public/ public_html  // where the format is ln -s target name

Potem otrzymywałbym komunikat w stylu " UPS, wygląda na to, że coś poszło nie tak "(lub błąd w zależności od ustawień debugowania). Aby to naprawić, musiałem zmienić moje uprawnienia na 755 dla moich folderów . numer referencyjny: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel

Ogólnie, Zamierzam wrócić i spróbować oryginalnego sposobu ze zmienionymi uprawnieniami, ponieważ uważam, że ta trasa jest mniej bezpieczna i bardziej zależna od mojej obsługi klienta hostingu.

*****Uwaga***** To polecenie oczywiście usuwa Twój folder public_html (czasami nazywany również public lub www). Musisz mieć kopię zapasową wszystkich plików, ponieważ je usuwasz. Ponadto, trzeba być przygotowanym, aby przejść przez obsługę klienta, aby go przywrócić. Wiele usług hostingowych nie pozwala po prostu odtworzyć folder na własną rękę.

 -3
Author: James Edward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-12 00:32:24