Como instalar o Laravel 4 em uma subpasta do host sem expor publicamente o / app / folder?

Eu queria saber se algum de vocês sabe de uma maneira de instalar o Laravel 4 em uma SUBDISTÓRIO / subpasta do host da Web sem expor a pasta / app / e outros arquivos sensatos à parte publicamente acessível do host.

A idéia é, eu poderia acessar http://mydomain.com/mylaravel/ para poder usar o Laravel, mas ao mesmo tempo eu quero evitar que alguém faça algo como http://mydomain.com / app / ou http://mydomain.com/mylaravel/app/ e, basicamente, ser capaz de ver meus arquivos de configuração e outros códigos.

    Então eu descobri como fazer isso. Eu vou explicar com um exemplo.

    Suponha que você tenha um domínio, http://domain.com . Veja um exemplo da estrutura que você pode estar usando:

    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/ é a raiz da parte publicamente acessível de seus arquivos de hospedagem na web. Você deseja criar uma subpasta em /public_html/ (neste caso /public_html/yourlaravel4/ ). Nesta subpasta, você armazenará todo o conteúdo da pasta public/ pasta public/ do Laravel 4.

    Agora, para o resto dos arquivos. Você tem que ir para a raiz dos seus arquivos de hospedagem, ou seja, você quer estar no domain.com/ level, podendo assim ver public_html/ e algumas outras pastas. Então, precisamos criar uma pasta aqui, onde os arquivos base do Laravel 4 serão armazenados. Neste caso, é domain.com/yourlaravel4_base/ . Dentro do yourlaravel4_base/ precisamos armazenar todos os arquivos e pastas que existem no diretório base do Laravel 4. Isso seria app/ , bootstrap/ , vendor/ , server.php , etc. Tudo EXCETO a pasta /public/ , cujo conteúdo você já armazenou em public_html/yourlaravel4/ .

    Finalmente, precisamos editar 2 arquivos: /bootstrap/paths.php e /bootstrap/paths.php do Laravel.


    No arquivo paths.php , substitua:

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

    com:

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

    No arquivo paths.php , substitua:

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

    com:

     'public' => __DIR__, 

    No arquivo paths.php , substitua:

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

    com:

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

    Em paths.php , substitua:

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

    com:

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

    Em index.php , substitua:

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

    com:

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

    Em index.php , substitua:

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

    com:

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

    Carregar alterações. Agora você deve poder ter o Laravel 4 instalado em uma subpasta no seu site sem realmente expor o app/ pasta e outros arquivos confidenciais. 🙂

    Você pode usar um alias: não hankey-pankey com diretórios generalizados em seu sistema.

    Especifique no seu httpd.conf ou painel do administrador:

     /mylaravel/ /path/to/laravel/public 

    Além disso, especifique o URL no app.php do seu Laravel

    Linha 29

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

    Eventualmente, defina o RewriteBase no seu /public/.htaccess

     RewriteBase /mylaravel/ 

    Funciona como um encanto e mantém sua estrutura de diretórios limpa e direto ao ponto!

    Pessoas pessoas! Não há necessidade de complicar demais as coisas!

    (Para outras pastas públicas, como o htdocs ou o www substitua public_html pelo seguinte com o seu.)

    1. Coloque todas as suas coisas do Laravel na pasta de nível superior (para que a pasta do app esteja ao lado da pasta public_html )
    2. Mova todos os arquivos de public para public_html ( public_html se também de mover arquivos ocultos, como .htaccess !)
    3. Excluir a pasta public agora vazia
    4. Na mudança de bootstrap/path.php

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

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

    5. Feito.

    resposta emmanuel não funciona para mim, mas eu fiz algumas mudanças para fazer o trabalho. embora eu usei minha raiz da web para ser a fonte de um projeto. aí está ; Eu tenho pasta htdocs como uma pasta raiz, mas você pode ter outros, como public_html, www ou assim por diante. Você pode facilmente replace meus htdocs com o que você tem.

    bem .

    minha diretora

     raiz/ 
           htdocs
           .htaccess
           .sobrepor 

    primeiro eu resolvi todas as dependencies laravel no meu localhost no windows com o compositor. depois disso eu empacotei todo o pacote em laravel4.zip. no meu htdocs eu crio uma pasta laravel e fiz upload e descompacte o arquivo zip nele.

      htdocs /
             laravel /
                      aplicativo
                      bootstrap
                      público 
                      vendedores
                      ... 

    Então, depois que eu descompactar o arquivo eu movo tudo em pasta pública na pasta htdocs

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

    agora temos que rewrite alguns pathes em htdocs / index.php e htdocs / laravel / bootstrap / paths.php

    mas vamos abrir o htdocs / laravel / bootstrap / paths.php. você veria

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

    O que isso significa . isso significa que estamos no caminho htdocs / laravel / bootstrap /. e lá, precisamos sair desta pasta para a pasta laravel, em seguida, indo para a pasta do aplicativo. Está bem . esta é a estrutura do laravel para o roteamento. Se você acertar isso, você pode fazer o seu laravel funcionar.

    encontrar

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

    e mude para

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

    (simples ha) com um (../) destes podemos subir uma pasta. então agora estamos na pasta laravel. mas precisamos estar em htdocs. então temos que escrever outro (../) para chegar lá.

    abra o htdocs / index.php e encontre

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

    mude para

      requer 'laravel / bootstrap / autoload.php'; 

    require é uma function php embutida, então vamos tratá-la como um simples php. nós realmente não precisamos de estilo laravel para buscar o arquivo autoload.php. então basta removê-lo e ir para o estilo clássico

    encontrar

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

    mude para

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

    Se você está tentando executar o Laravel 5.1 em um espaço de hospedagem compartilhada e todas as respostas acima parecem ser um pouco diferentes dos arquivos / pastas reais do Laravel, ou você está procurando como colocar o seu laravel 5 / 5.1 em um subdiretório no seu diretório. espaço de hospedagem compartilhada para que você possa acessá-lo assim:

     http://mywebsite.com/mylaravel/ 

    Então esta resposta é para você, antes de tudo, certifique-se de conhecer

    Requisitos do Laravel 5.1:

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

    aqui um fácil dois tutoriais para você:

    Link 1

    Link 2

    Se você estiver usando o assistente addondomain ou subdomaind em seu painel, o assistente deverá perguntar por raiz do documento. por exemplo, eu quero addon droidman.com, o assistente deve me sugerir com a criação da pasta droidman.com. nesta etapa, diga ao assistente para fazer a pasta droidman.com/public. em seguida, coloque sua aplicação na pasta droidman.com. seu host irá procurar na pasta pública;). problema resolvido

    Se você quiser simplesmente configurar o Projeto Laravel em hospedagem compartilhada e você tem access cPanel, então você pode fazer os seguintes passos que eu segui e funcionou bem.

    Passo 1: Faça o arquivo zip ou tar de todo o seu aplicativo Laravel em sua máquina local.

    Passo 2: Vá para o Cpanel. Carregue o arquivo zip / tar no diretório public_html e extraia-o. (Você também pode criar uma pasta separada para o seu aplicativo laravel. Como eu quero fazer upload de mais de um aplicativo Laravel, criei um diretório separado para cada um, como mostrado na imagem abaixo.)

    insira a descrição da imagem aqui

    Passo 3: Agora vá para ‘Addon Domain’ e altere a raiz do documento do seu domínio especificado. Aponte o domínio para a pasta pública.

    insira a descrição da imagem aqui

    Agora verifique o seu domínio que irá redirect para o arquivo public / index.php. Não há necessidade de alterar nenhum caminho.

    Se você estiver usando um servidor apache, a maneira mais simples de fazer isso é hospedar o aplicativo Laravel fora da raiz www (ou em uma pasta protegida em www root) e então criar uma subpasta desejada para apontá-la para a pasta pública em laravel

    Por exemplo, eu coloco minhas instalações de laravel em:

     /usr/local/share/myLaravel 

    Em seguida, na sua pasta www pública, crie um link simbólico da seguinte forma:

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

    Você precisará fazer alguns ajustes na sua instalação, como colocar sua Rewrite Base em / mylaravel / e certificar-se de que seus arquivos de configuração permitam substituições no local base, mas isso é mais simples do que modificar tudo.

    Certifique-se de verificar suas permissions. Eu implantei através do seguinte, embora eu não recomende isso.

    Eu usei o SSH e fiz algo como:

     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 

    Depois, eu receberia uma mensagem como “Opa, parece que algo deu errado” (ou um erro dependendo das configurações de debugging). Para corrigir isso, eu só tive que mudar minhas permissions para 755 para minhas pastas . referência: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel

    No geral, vou voltar e experimentar a maneira original com as permissions alteradas, pois acho que esse caminho é menos seguro e mais dependente de meu serviço de atendimento ao cliente de hospedagem.

    ***** Nota ***** Este comando obviamente remove sua pasta public_html (também às vezes chamada public ou www). Você precisa ter um backup de todos os arquivos porque está excluindo-o. Além disso, você precisará estar preparado para passar pelo atendimento ao cliente para restaurá-lo. Muitos serviços de hospedagem não permitem que você simplesmente crie a pasta por conta própria.