Come installare Laravel 4 in una sottocartella host Web senza esposizione pubblica / app / cartella?

Mi stavo chiedendo se qualcuno di voi sa come installare Laravel 4 in una sottodirectory / sottocartella host web senza mostrare la / app / cartella e altri file sensibili alla parte accessibile pubblicamente dall’host.

L’idea è, sarei in grado di accedere a http://mydomain.com/mylaravel/ per poter usare Laravel, ma allo stesso tempo voglio evitare che qualcuno faccia qualcosa come andare su http://mydomain.com / app / o http://mydomain.com/mylaravel/app/ e fondamentalmente essere in grado di vedere i miei file di configurazione e altro codice.

Così ho capito come farlo. Spiegherò con un esempio.

Supponiamo che tu abbia un dominio, http://dominio.com . Ecco un esempio della struttura che potresti utilizzare:

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/ è la radice della parte accessibile pubblicamente dei file di hosting web. Vuoi creare una sottocartella in /public_html/ (in questo caso /public_html/yourlaravel4/ ). In questa sottocartella verranno archiviati tutti i contenuti di Laravel 4 public/ folder.

Ora, per il resto dei file. Devi andare alla radice dei tuoi file di web hosting, cioè, vuoi essere a domain.com/ livello, quindi essere in grado di vedere public_html/ e alcune altre cartelle. Quindi, dobbiamo creare una cartella qui, dove verranno archiviati i file di base di Laravel 4. In questo caso, è domain.com/yourlaravel4_base/ . All’interno di yourlaravel4_base/ dobbiamo memorizzare tutti i file e le cartelle esistenti nella directory di base di Laravel 4. Sarebbe app/ , bootstrap/ , vendor/ , server.php , ecc. Tutto eccetto la cartella /public/ , il cui contenuto è già stato memorizzato in public_html/yourlaravel4/ .

Infine, abbiamo bisogno di modificare 2 file: Laravel’s /bootstrap/paths.php e /public/index.php .


Nel file paths.php , sostituire:

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

con:

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

Nel file paths.php , sostituire:

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

con:

 'public' => __DIR__, 

Nel file paths.php , sostituire:

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

con:

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

In paths.php , sostituire:

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

con:

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

In index.php , sostituisci:

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

con:

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

In index.php , sostituisci:

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

con:

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

Carica le modifiche. Ora dovresti essere in grado di installare Laravel 4 in una sottocartella del tuo sito web senza esporre effettivamente l’ app/ cartella e altri file sensibili. 🙂

È ansible utilizzare un alias: nessun hankey-pankey con directory diffuse sul proprio sistema.

Specifica nel tuo httpd.conf o nel pannello di amministrazione:

 /mylaravel/ /path/to/laravel/public 

Inoltre, specifica l’URL nell’app.php di Laravel

Riga 29

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

Infine, imposta RewriteBase nel tuo /public/.htaccess

 RewriteBase /mylaravel/ 

Funziona come un fascino e mantiene la struttura della directory pulita e al punto!

Persone, persone! Non c’è bisogno di complicare troppo le cose!

(Per altre cartelle pubbliche, come htdocs o www basta sostituire public_html nel seguente con il tuo.)

  1. Metti tutto il materiale di Laravel nella cartella di primo livello (in modo che la cartella app si trovi accanto alla cartella public_html )
  2. Sposta tutti i file da public a public_html (assicurati di spostare anche i file nascosti, come .htaccess !)
  3. Elimina la cartella public ora vuota
  4. Nella modifica bootstrap/path.php

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

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

  5. Fatto.

la risposta di Emmanuel non funziona per me ma ho fatto alcune modifiche per farlo funzionare. anche se ho usato la mia web root per essere la fonte di un progetto. Eccolo ; Ho una cartella htdocs come cartella radice ma potresti averne altre, come public_html, www o così via. puoi facilmente sostituire i miei htdocs con quello che hai.

bene

la mia dircetta

 radice/ 
       htdocs
       .htaccess
       .oltrepassare 

per prima cosa ho risolto tutte le dipendenze di laravel sul mio localhost su Windows con il compositore. dopo di che ho fatto impacchettare l’intero pacchetto in laravel4.zip. nel mio htdocs creo una cartella laravel e ho fatto caricare e decomprimere il file zip in esso.

  htdocs /
         laravel /
                  App
                  bootstrap
                  pubblico 
                  fornitori
                  ... 

così dopo aver decompresso il file, sposto tutto nella cartella pubblica nella cartella htdocs

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

ora dobbiamo riscrivere alcuni percorsi in htdocs / index.php e htdocs / laravel / bootstrap / paths.php

ma lascia aperto htdocs / laravel / bootstrap / paths.php. vedresti

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

cosa significa . significa che siamo in piedi su htdocs / laravel / bootstrap / path. e lì per abbiamo bisogno di uscire da questa cartella alla cartella laravel andando poi alla cartella app. ok . questa è la struttura del laravel per il routing. se hai ragione, puoi far funzionare il tuo laravel.

trova

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

e cambiarlo in

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

(semplice ha) con uno (../) di questi possiamo andare su una cartella. quindi ora siamo nella cartella laravel. ma dobbiamo essere in htdocs. quindi dobbiamo scrivere un altro (../) per arrivarci.

apri htdocs / index.php e trova

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

cambiarlo in

  richiede 'laravel / bootstrap / autoload.php'; 

require è una funzione php integrata quindi la tratteremo come un semplice php. non abbiamo davvero bisogno dello stile laravel per il recupero del file autoload.php. così semplicemente rimuovilo e vai per lo stile classico

trova

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

cambiarlo in

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

Se stai tentando di eseguire Laravel 5.1 in uno spazio di hosting condiviso e tutte le risposte di cui sopra sembrano essere un po ‘diverse dagli attuali file / cartelle di Laravel o stai cercando come mettere il tuo laravel 5 / 5.1 in una sottodirectory sul tuo spazio di hosting condiviso in modo da poter accedere in questo modo:

 http://mywebsite.com/mylaravel/ 

Quindi questa risposta è per te, prima di tutto assicurati di incontrarti

Requisiti Laravel 5.1:

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

qui un semplice tutorial per te:

Link 1

Link 2

se si sta utilizzando la procedura guidata addondomain o subdomaind nel pannello, la procedura guidata dovrebbe richiedere la root dei documenti. per esempio voglio aggiungere droidman.com, la procedura guidata dovrebbe suggerirmi di creare la cartella droidman.com. in questo passaggio, dire alla procedura guidata di creare la cartella droidman.com/public. quindi inserisci la tua applicazione nella cartella droidman.com. il tuo host guarderà la cartella pubblica;). problema risolto

Se vuoi semplicemente configurare Laravel Project su un hosting condiviso e hai accesso a cPanel, allora puoi seguire i passi che ho seguito e ha funzionato bene.

Passo 1: Crea il file zip o tar della tua intera applicazione Laravel sul tuo computer locale.

Passaggio 2: vai a Cpanel. Carica il file zip / tar nella directory public_html e quindi estrailo. (Puoi anche creare una cartella separata per la tua applicazione laravel. Siccome voglio caricare più di una applicazione Laravel, ho creato una directory separata per ognuna come mostrato nell’immagine qui sotto.)

inserisci la descrizione dell'immagine qui

Passaggio 3: ora vai su “Addon Domain” e modifica la root del documento del dominio specificato. Puntare il dominio sulla cartella pubblica.

inserisci la descrizione dell'immagine qui

Ora controlla il tuo dominio che reindirizzerà al file public / index.php. Non è necessario modificare alcun percorso.

Se stai usando un server Apache, il modo più semplice per farlo è quello di ospitare la tua applicazione Laravel al di fuori della radice www (o in una cartella protetta in www root), quindi colbind in symlink la sottocartella desiderata per puntarla nella cartella pubblica in laravel

Ad esempio, posiziono le mie installazioni di laravel in:

 /usr/local/share/myLaravel 

Quindi, nella tua cartella www pubblica, crea un link simbolico in questo modo:

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

Dovrai apportare alcune modifiche alla tua installazione, come mettere la tua Rewrite Base in / mylaravel / e assicurarti che i tuoi file di configurazione consentano di eseguire l’override nella posizione base, ma è più semplice che modificare tutto.

Assicurati di controllare le tue autorizzazioni. Ho schierato attraverso il seguente anche se non lo consiglio.

Ho usato SSH e ho fatto qualcosa del tipo:

 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 

Successivamente, ricevo un messaggio come “Whoops, sembra che qualcosa sia andato storto” (o un errore a seconda delle impostazioni di debug). Per risolvere questo problema, ho dovuto modificare le mie autorizzazioni su 755 per le mie cartelle . riferimento: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel

Nel complesso, tornerò indietro e proveremo il modo originale con le autorizzazioni modificate perché trovo questa via meno sicura e più dipendente dal mio servizio clienti di hosting.

***** Note ***** Questo comando rimuove ovviamente la tua cartella public_html (anche a volte chiamata public o www). È necessario disporre di un backup di tutti i file al suo interno perché lo si sta eliminando. Inoltre, dovrai essere pronto a passare attraverso il servizio clienti per ripristinarlo. Molti servizi di hosting non ti consentono semplicemente di ricreare la cartella da solo.