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