Как установить Laravel 4 в подпапку веб-узла без публичного раскрытия/ app / папки?


Мне было интересно, знает ли кто-нибудь из вас способ установки Laravel 4 в подкаталог / подпапку веб-узла, не подвергая папку /app/ и другие разумные файлы общедоступной части хоста.

идея в том, что я смогу получить доступ http://mydomain.com/mylaravel/ чтобы иметь возможность использовать Laravel, но в то же время я хочу, чтобы никто не делал что-то вроде http://mydomain.com/app/ или http://mydomain.com/mylaravel/app/ и в основном возможность видеть мои конфигурационные файлы и другой код.

9 60

9 ответов:

так я понял, как это сделать. Я объясню на примере.

Предположим, вы домен,http://domain.com. Вот пример структуры, которую вы можете использовать:

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/ является корнем общедоступной части ваших файлов веб-хостинга. Вы хотите создать подпапку в /public_html/ (в данном случае /public_html/yourlaravel4/). В этой подпапке вы будете хранить все содержание из Laravel 4 public/ папка.

теперь, для остальных файлов. Вы должны перейти в корень ваших файлов веб-хостинга, то есть вы хотите быть в domain.com/ уровень, поэтому возможность видеть public_html/ и некоторые другие папки. Затем нам нужно создать папку здесь, где будут храниться базовые файлы Laravel 4. В данном случае, это domain.com/yourlaravel4_base/. Внутри yourlaravel4_base/ мы должны хранить каждый файл и папку, которая существует в базе Laravel 4 каталога. Это было бы app/,bootstrap/,vendor/,server.php и т. д. Все, кроме /public/ папка, содержимое которой вы уже сохранили в public_html/yourlaravel4/.

наконец, нам необходимо отредактировать 2 файла: что Laravel-это /bootstrap/paths.php и /public/index.php.


на заменить:

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

С:

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

на заменить:

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

С:

'public' => __DIR__,

на , заменить:

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

С:

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

на paths.php заменить:

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

С:

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

на index.php заменить:

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

С:

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

на index.php заменить:

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

С:

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

загрузить изменения. Теперь вы должны иметь возможность установить Laravel 4 в подпапке на вашем сайте, фактически не подвергая и другие конфиденциальные файлы. :)

вы можете использовать псевдоним: нет hankey-pankey с широко распространенными каталогами в вашей системе.

укажите в своем httpd.conf или админ-панели:

/mylaravel/ /path/to/laravel/public

кроме того, укажите URL-адрес в приложении вашего Laravel.php

строка 29

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

В конечном итоге установите RewriteBase в вашем /public/.htaccess

RewriteBase /mylaravel/

работает как шарм и держит вашу структуру каталогов в чистоте и по существу!

люди, люди! Не нужно все усложнять!

(для других общих папок, например,htdocs или www просто заменить public_html в следующем с одной.)

  1. Поместите все свои вещи Laravel в папку верхнего уровня (так что app папка находится рядом с )
  2. переместить все файлы из public до public_html (Не забудьте также переместить скрытые файлы, такие как .htaccess!)
  3. Удалить сейчас пусто public папку
  4. на bootstrap/path.php изменить

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

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

  5. сделано.

Эммануэль ответ не работает для меня, но я сделал некоторые изменения, чтобы сделать его работу . хотя я использовал свой веб-корень, чтобы быть источником проекта . там ; у меня есть папка htdocs в качестве корневой папки, но у вас могут быть другие, например public_html , www и так далее . вы можете легко заменить мои htdocs на тот, который у вас есть .

хорошо .

мой dircetory

root/ 
      htdocs
      .htaccess
      .override

сначала я решил все зависимости laravel от моего localhost в windows с помощью composer . после что я действительно упаковал весь пакет в laravel4.застежка-молния. в моем htdocs я создаю папку laravel, и я загрузил и распаковал zip-файл в ней.

htdocs/
        laravel/
                 app
                 bootstrap
                 public 
                 vendors
                 ...

поэтому после того, как я распаковал файл, я перемещаю все в общую папку в папку htdocs

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

теперь мы должны переписать некоторые пути в htdocs / index.php и htdocs/laravel/bootstrap / пути.php

но позволяет открыть htdocs/laravel/bootstrap / пути.РНР. вы бы видели

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

что делает это значит . это означает, что мы стоим на htdocs/laravel/bootstrap/ path . и там нам нужно выйти из этой папки в папку laravel, а затем перейти к папке приложения . ладно. это структура laravel для маршрутизации . если вы сделаете это правильно, вы можете сделать свой laravel run .

найти

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

и меняем его на

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

(простой ha) с одним (../) из них мы можем подняться на одну папку . Итак, теперь мы находимся в папке laravel . но мы должны быть в htdocs . поэтому мы должны написать еще один (../) чтобы попасть туда .

открыть htdocs / index.php и найти

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

на

require 'laravel/bootstrap/autoload.php'; 

require-это встроенная функция php, поэтому мы будем рассматривать ее как простой php . нам действительно не нужен стиль laravel для извлечения autoload.PHP-файл. так что просто удалите его и перейти на классический стиль

найти

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

на

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

Если вы пытаетесь запустить Laravel 5.1 в общее пространство хостинга, и все вышеперечисленные ответы, похоже, немного отличаются от фактических файлов/папок Laravel, или вы ищете, как поместить ваш laravel 5/5. 1 в подкаталог на вашем общем пространстве хостинга, чтобы вы могли получить к нему доступ следующим образом:

http://mywebsite.com/mylaravel/

Так что этот ответ для вас, прежде всего убедитесь, что вы встречаете

фреймворк Laravel 5.1 требования :

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

здесь легко два учебника для вас :

ссылка 1

Ссылка 2

Если вы используете addondomain или subdomaind wizard в своей панели ,мастер должен запросить у вас корень документа . например, я хочу добавить droidman.com , мастер должен предложить мне с созданием droidman.com папка . на этом этапе рассказывают мастера, чтобы создать папку droidman.com/public . затем поместите свое приложение в droidman.com папка . ваш хост будет смотреть на общую папку ;). проблема решена

Если вы хотите просто настроить проект Laravel на общем хостинге, и у вас есть доступ к cPanel, вы можете выполнить следующие шаги, которые я выполнил, и это сработало хорошо.

Шаг 1: Сделайте zip или tar файл всего приложения Laravel на Вашем локальном компьютере.

Шаг 2: Перейдите в Cpanel. Загрузите zip / tar файл в каталог public_html, а затем извлеките его. (Вы также можете создать отдельную папку для вашего приложения Laravel. Как я хочу, чтобы загрузить более одного Laravel приложения я создал отдельный каталог для каждого из них, как показано на рисунке ниже.)

enter image description here

Шаг 3: Теперь перейдите в "Addon Domain" и измените корень документа указанного домена. Укажите домен в общую папку.

enter image description here

теперь проверьте свой домен, который он перенаправит на public / index.PHP-файл. Нет необходимости менять какие-либо пути.

Если вы используете сервер apache, самый простой способ сделать это-разместить свое приложение Laravel за пределами корня www (или в защищенной папке в корне www) , а затем символически связать нужную подпапку, чтобы указать ей общую папку в laravel

например, я помещаю свои установки laravel в:

/usr/local/share/myLaravel

затем в общедоступной папке www создайте символическую ссылку следующим образом:

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

вам нужно будет внести некоторые изменения в вашу установку, например поместите свою базу перезаписи в /mylaravel/ и убедитесь, что ваши файлы конфигурации разрешают переопределения в базовом местоположении, но это проще, чем изменять все.

обязательно проверьте свои разрешения. Я развернул через следующее, хотя я не рекомендую его.

я использовал SSH и сделал что-то типа:

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

после этого я получу сообщение типа "Упс, похоже, что-то пошло не так" (или ошибка в зависимости от настроек отладки). Чтобы исправить это, мне просто нужно было изменить мои разрешения на 755 для моих папок. ссылка: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel

в целом, я собираюсь вернуться и попробовать оригинальный способ с измененными разрешениями, поскольку я нахожу этот маршрут менее безопасным и более зависимым от моего обслуживания клиентов хостинга.

*****Примечание***** Эта команда, очевидно, удаляет вашу папку public_html (также иногда называемую public или www). Вам нужно иметь резервную копию всех файлов в нем, потому что вы удаляете его. Кроме того, вам понадобится быть готовым пройти через службу поддержки восстановить его. Многие службы хостинга не позволяют вам просто воссоздать папку самостоятельно.