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.
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/
.
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. :)
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!
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.)
- Umieść wszystkie swoje rzeczy Laravel w folderze najwyższego poziomu (tak, aby folder
app
był obok folderupublic_html
) - Przenieś wszystkie pliki z
public
dopublic_html
(pamiętaj, aby przenosić również ukryte pliki, takie jak.htaccess
!) - Usuń teraz pusty
public
folder -
W
bootstrap/path.php
Zmień'public' => __DIR__.'/../public',
do'public' => __DIR__.'/../public_html',
Zrobione.
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';
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:
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
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.)
Krok 3: Teraz przejdź do "domeny Addon" i zmień główny dokument określonej domeny. Wskaż domenę do folderu publicznego.
Teraz sprawdź swoją domenę, która przekieruje do public/index.plik php. Nie ma potrzeby zmieniać żadnych ścieżek.
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.
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ę.
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