2014-09-08 16 views
8

Ho sviluppato un'applicazione con laravel 4.2.8 e ora ho problemi a distribuirlo. Ho seguito questa risposta https://stackoverflow.com/a/16683938/3153380 ma non funziona. Mi viene visualizzato uno schermo bianco e le intestazioni restituiscono uno stato di errore del server interno 500.Come distribuire laravel 4.2 su hosting condiviso?

Ho letto che laravel 4.2 è un po 'complicato da configurare su hosting condiviso è vero? Posso sembrare di trovare una soluzione funzionante, quindi coloro che hanno distribuito 4.2 prima di aiutare per favore. La mia struttura di cartelle è come qui di seguito

root/ laravel_base/ app/ ... public_html/ siteroot/ attività/ pacchetti/uploads/ indice. php ... Eventuali puntatori?

+0

A "500 Internal Server Error" codice di stato (o un pagina vuota) significa che il tuo script sta generando un errore ma non hai configurato PHP per visualizzare i messaggi di errore. È qualcosa che devi risolvere prima di andare oltre; è impossibile codificare correttamente senza l'aiuto di messaggi di errore. Ecco una [breve spiegazione] (http://stackoverflow.com/a/5680885/13508). –

+0

@ ÁlvaroG.Vicario grazie per il puntatore. Ho ricevuto questo errore Attenzione: require(): limitazione open_basedir in vigore. File (/ usr/www/users/hosting_base/laravel_base /../../ siteroot/bootstrap/autoload.php) non è compreso nei percorsi consentiti: – zinyando

+0

Se è così che il percorso è simile, il tuo siteroot è all'esterno il tuo hosting_base. –

risposta

18

Prima assicurarsi che l'host condiviso sia in esecuzione php> = v5.4. In secondo luogo cerchiamo di seguire questa procedura:

  1. Creare una cartella di fuori del public_html/ o www/. Es: project/
  2. Copiare tutti i file e cartelle (tranne la cartella pubblica) dal laravel app in quella cartella project/
  3. Copiare il contenuto della cartella di public/ nella vostra public_html/ o www/(il .htaccess deve essere anche lì)
  4. All'interno pubblico/individuare il file index.php e modificare i seguenti percorsi:

    a. Path to autoload.php

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

    in

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

    b. Path to start.php

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

    in

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

Dopo tutto quello che si deve lavorare.

+0

Ho creato la cartella all'esterno di __public_html'_ sul mio hosting e ho copiato la cartella ** 'public' ** dal mio laravel projetc all'interno di _'public_html'_. Ora per accedere alla mia app Devo specificare anche la cartella pubblica nell'URL? Voglio dire: ** http: //lenguajemx.com/public/** –

+0

probabilmente possono essere due cose. 1) Hai public_html/pubblico? se è così, rendilo solo public_html/{contents here} 2) Hai copiato anche il .htaccess? –

+0

Sì, entrambi gli aspetti sono veri, ho 'public_html/public' e ho già copiato' .htaccess' nella cartella _public_html/public_. Quindi lo farò come hai detto tu. Grazie, ci riproverò. –

4

ho fatto qualcosa di simile a @Helder Lucas - ho anche dovuto modificare il file di bootstrap/paths.php:

# change: 'public' => __DIR__.'/../public', 
'public' => __DIR__.'/../../public_html', 

ho creato uno script per progetti laravel di impostazione per gli ambienti di hosting condiviso. Ecco il succo: https://gist.github.com/meganlkm/74dba6c4350ed58bf7bb

+0

ecco un nuovo gist per laravel 5: https://gist.github.com/meganlkm/15ae87674642590172c5 – m79lkm

0

È stato abbastanza facile far funzionare Laravel 4/5 su OpenShift Online.Per chiunque altro in esecuzione in hosting di problemi, check out: https://hub.openshift.com/quickstarts/115-laravel-5-0

+0

hey lucido, quando openshift supporterà php 5.6? – Gokigooooks

+1

OpenShift 3 supporta PHP 5.6. Controlla l'anteprima per sviluppatori OpenShift Online: https://www.openshift.com/devpreview/#technologies – luciddreamz

0

Ho appena aggiungere una nuova cartella nella cartella/sul mio hosting condiviso

www.domain.com

Dove aggiungo una sottocartella denominata

public/

modo che il percorso assomiglia a questo

/www.domain.com/public/

E dal CPANEL I link alla cartella nome di dominio root al

www.domain.com/public/

e poi mi basta caricare l'applicazione laravel in

/www.domain.com

Funziona per laravel 4.2 e 5. E non vi sono falle di sicurezza perché la cartella del dominio principale si trova nella cartella pubblica dell'app laravel, non è necessario aggiornare la .htaccess file.

Funziona.

+0

trovo questa risposta poco chiara. quale dovrebbe essere il contenuto della cartella pubblica? – Vainglory07

+0

la cartella pubblica di laravel –

0

provare a giocare con .htaccess

Nel vostro public_html, aggiungere un .htaccess di inoltrare la richiesta

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

cioè

public_html 
├── yoursite.com <-------- laravel project 
├── .htaccess  <-------- this file