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

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

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

Ответ 1

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

Предположим, что вы являетесь доменом 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 и т.д. Все EXCEPT папки /public/, содержимое которой вы уже сохранили в public_html/yourlaravel4/.

Наконец, нам нужно отредактировать 2 файла: Laravel /bootstrap/paths.php и /public/index.php.


В файле paths.php замените:

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

с:

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

В файле paths.php замените:

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

с:

'public' => __DIR__,

В файле paths.php замените:

'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, установленный во вложенной папке на своем веб-сайте, без фактического раскрытия папки app/ и других конфиденциальных файлов.:)

Ответ 2

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

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

/mylaravel/ /path/to/laravel/public

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

Строка 29

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

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

RewriteBase /mylaravel/

Работает как шарм и сохраняет структуру вашего каталога в чистоте и до точки!

Ответ 3

Люди, люди! Не нужно слишком усложнять вещи!

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

  • Поместите все ваши материалы Laravel в папку верхнего уровня (так что папка app находится рядом с папкой public_html)
  • Переместите все файлы с public на public_html (обязательно переместите скрытые файлы, например .htaccess!)
  • Удалите теперь пустую папку public
  • В bootstrap/path.php изменить

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

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

  • Готово.

Ответ 4

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

штраф.

мой круг

root/ 
      htdocs
      .htaccess
      .override

сначала я решил все зависимости laravel от моего localhost на окнах с композитором. после этого я упаковал весь пакет в laravel4.zip. в моем 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/paths.php

но позволяет открывать htdocs/laravel/bootstrap/paths.php. вы увидите

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

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

найдите

'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';

Ответ 5

Если вы пытаетесь запустить 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

Ответ 6

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

Ответ 7

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

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

Ответ 8

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

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

/usr/local/share/myLaravel

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

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

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

Ответ 9

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

Я использовал 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 (также иногда называемую общедоступной или www) папку. Вам нужно иметь резервную копию всех файлов, потому что вы удаляете его. Кроме того, вам нужно будет подготовиться к обслуживанию клиентов, чтобы восстановить его. Многие услуги хостинга не позволяют вам просто воссоздать папку самостоятельно.